Hello!
I can confirm this bug in unstable with brasero 3.2.0. I've looked in GNOME
Bugzilla but not found anything usefull. So I've created patch to avoid
this segfault.
 Fault happens because new folder must have flag 'is_grafted' (project node
not from real file or folder), but code in brasero-data-project.c in
function brasero_data_project_add_node_real doesn't handle nodes with flag
'is_fake' correctly (new empty folder has this flag). Node isn't marked as
grafted with function brasero_file_node_graft. I've just added call of this
function.
It's working for me.
diff -Nru brasero-3.2.0/debian/changelog brasero-3.2.0/debian/changelog
--- brasero-3.2.0/debian/changelog	2012-03-14 22:16:20.000000000 +0400
+++ brasero-3.2.0/debian/changelog	2012-03-25 23:45:56.000000000 +0400
@@ -1,3 +1,10 @@
+brasero (3.2.0-4.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Fixed segfault when renaming or removing folder in project.
+
+ -- Andrej Belym <white.wolf.2...@gmail.com>  Sun, 25 Mar 2012 23:43:01 +0400
+
 brasero (3.2.0-4) unstable; urgency=low
 
   * Build against tracker 0.14.
diff -Nru brasero-3.2.0/debian/patches/grafted_folders.patch brasero-3.2.0/debian/patches/grafted_folders.patch
--- brasero-3.2.0/debian/patches/grafted_folders.patch	1970-01-01 03:00:00.000000000 +0300
+++ brasero-3.2.0/debian/patches/grafted_folders.patch	2012-03-26 00:07:07.000000000 +0400
@@ -0,0 +1,16 @@
+Description: Fixed segfault when renaming or removing folder in project.
+  When adding folder from filesystem to project and creating new folder in this folder, removing or renaming causes segfault.
+  This happens because new folder must have flag 'is_grafted' (project node not from real file or folder), but code in brasero-data-project.c in function brasero_data_project_add_node_real doesn't handle nodes with flag 'is_fake' correctly (new empty folder has this flag). Node isn't marked as grafted with function brasero_file_node_graft. I've just added call of this function.
+Author: Andrej Belym <white.wolf.2...@gmail.com>
+Index: brasero-3.2.0/libbrasero-burn/brasero-data-project.c
+=============================================================
+--- brasero-3.2.0.orig/libbrasero-burn/brasero-data-project.c
++++ brasero-3.2.0/libbrasero-burn/brasero-data-project.c
+@@ -1674,6 +1674,7 @@ brasero_data_project_add_node_real (Bras
+ 		/* The node is a fake directory; graft it as well as all the 
+ 		 * nodes already in the tree with the same URI */
+ 		graft = brasero_data_project_uri_graft_nodes (self, uri);
++		brasero_file_node_graft (node, graft);
+ 	}
+ 	else {
+ 		gchar *parent_uri;
diff -Nru brasero-3.2.0/debian/patches/series brasero-3.2.0/debian/patches/series
--- brasero-3.2.0/debian/patches/series	2012-03-14 04:10:15.000000000 +0400
+++ brasero-3.2.0/debian/patches/series	2012-03-25 23:49:29.000000000 +0400
@@ -2,3 +2,4 @@
 02_gcc-format-security
 03_cue-invalid-frame-75.patch
 04_tracker-0.14.patch
+grafted_folders.patch
Description: Fixed segfault when renaming or removing folder in project.
  When adding folder from filesystem to project and creating new folder in this folder, removing or renaming causes segfault.
  This happens because new folder must have flag 'is_grafted' (project node not from real file or folder), but code in brasero-data-project.c in function brasero_data_project_add_node_real doesn't handle nodes with flag 'is_fake' correctly (new empty folder has this flag). Node isn't marked as grafted with function brasero_file_node_graft. I've just added call of this function.
Author: Andrej Belym <white.wolf.2...@gmail.com>
Index: brasero-3.2.0/libbrasero-burn/brasero-data-project.c
=============================================================
--- brasero-3.2.0.orig/libbrasero-burn/brasero-data-project.c
+++ brasero-3.2.0/libbrasero-burn/brasero-data-project.c
@@ -1674,6 +1674,7 @@ brasero_data_project_add_node_real (Bras
 		/* The node is a fake directory; graft it as well as all the 
 		 * nodes already in the tree with the same URI */
 		graft = brasero_data_project_uri_graft_nodes (self, uri);
+		brasero_file_node_graft (node, graft);
 	}
 	else {
 		gchar *parent_uri;

Reply via email to