diff options
Diffstat (limited to 'system/xfburn/fix_empty_dir_segfault.diff')
-rw-r--r-- | system/xfburn/fix_empty_dir_segfault.diff | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/system/xfburn/fix_empty_dir_segfault.diff b/system/xfburn/fix_empty_dir_segfault.diff new file mode 100644 index 0000000000..b5543a5358 --- /dev/null +++ b/system/xfburn/fix_empty_dir_segfault.diff @@ -0,0 +1,47 @@ +--- xfburn/xfburn-data-composition.c 2011-02-17 16:37:03.000000000 +0100 ++++ xfburn/xfburn-data-composition_patched.c 2011-02-17 16:40:40.000000000 +0100 +@@ -1874,26 +1874,29 @@ + g_error ("Failed adding %s as a node to the image: code %X!", src, r); + } + +- basename = g_path_get_basename (src); ++ /* Check names only for items not manually created (#613563) */ ++ if (type != DATA_COMPOSITION_TYPE_DIRECTORY || src != NULL) { ++ basename = g_path_get_basename (src); ++ ++ /* check if the file has been renamed */ ++ if (strcmp (basename, name) != 0) { ++ /* rename the iso_node */ ++ r = iso_node_set_name (node, name); ++ ++ if (r == 0) { ++ /* The first string is the renamed name, the second one the original name */ ++ xfce_warn (_("Duplicate filename '%s' for '%s'"), name, src); ++ ++ g_free (basename); ++ g_free (name); ++ g_free (src); + +- /* check if the file has been renamed */ +- if (strcmp (basename, name) != 0) { +- /* rename the iso_node */ +- r = iso_node_set_name (node, name); +- +- if (r == 0) { +- /* The first string is the renamed name, the second one the original name */ +- xfce_warn (_("Duplicate filename '%s' for '%s'"), name, src); +- +- g_free (basename); +- g_free (name); +- g_free (src); +- +- continue; ++ continue; ++ } + } ++ g_free (basename); + } + +- g_free (basename); + g_free (name); + g_free (src); |