Fix a nautilus segfault when burning
This commit is contained in:
		
							parent
							
								
									2565d11fc6
								
							
						
					
					
						commit
						0cee1ae5ec
					
				| @ -1,7 +1,6 @@ | |||||||
| 
 |  | ||||||
| Name:      brasero | Name:      brasero | ||||||
| Version:   2.27.5 | Version:   2.27.5 | ||||||
| Release:   1%{?dist} | Release:   2%{?dist} | ||||||
| Summary:   Gnome CD/DVD burning application | Summary:   Gnome CD/DVD burning application | ||||||
| Group:     Applications/Multimedia | Group:     Applications/Multimedia | ||||||
| License:   GPLv2+ | License:   GPLv2+ | ||||||
| @ -9,6 +8,8 @@ URL:       http://www.gnome.org/projects/brasero/ | |||||||
| Source0:   http://ftp.gnome.org/pub/GNOME/sources/brasero/2.27/%{name}-%{version}.tar.bz2 | Source0:   http://ftp.gnome.org/pub/GNOME/sources/brasero/2.27/%{name}-%{version}.tar.bz2 | ||||||
| BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) | BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) | ||||||
| 
 | 
 | ||||||
|  | Patch0:    nautilus-segfault.patch | ||||||
|  | 
 | ||||||
| BuildRequires:  glib2-devel >= 2.15.6 | BuildRequires:  glib2-devel >= 2.15.6 | ||||||
| BuildRequires:  gettext intltool gtk-doc | BuildRequires:  gettext intltool gtk-doc | ||||||
| BuildRequires:  desktop-file-utils | BuildRequires:  desktop-file-utils | ||||||
| @ -86,6 +87,7 @@ developing brasero applications. | |||||||
| 
 | 
 | ||||||
| %prep | %prep | ||||||
| %setup -q | %setup -q | ||||||
|  | %patch0 -p1 -b .nautilus-segfault | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| %build | %build | ||||||
| @ -203,6 +205,9 @@ fi | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Mon Aug  3 2009 Matthias Clasen <mclasen@redhat.com> - 2.27.5-2 | ||||||
|  | - Fix a nautilus segfault when burning   | ||||||
|  | 
 | ||||||
| * Tue Jul 28 2009 Matthias Clasen <mclasen@redhat.com> - 2.27.5-1 | * Tue Jul 28 2009 Matthias Clasen <mclasen@redhat.com> - 2.27.5-1 | ||||||
| - Update to 2.27.5 | - Update to 2.27.5 | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										156
									
								
								nautilus-segfault.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										156
									
								
								nautilus-segfault.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,156 @@ | |||||||
|  | diff --git a/libbrasero-burn/brasero-track-data-cfg.c b/libbrasero-burn/brasero-track-data-cfg.c
 | ||||||
|  | index 69d3505..3e91a26 100644
 | ||||||
|  | --- a/libbrasero-burn/brasero-track-data-cfg.c
 | ||||||
|  | +++ b/libbrasero-burn/brasero-track-data-cfg.c
 | ||||||
|  | @@ -1754,29 +1754,6 @@ brasero_track_data_clean_autorun (BraseroTrackDataCfg *track)
 | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |  static void | ||||||
|  | -brasero_track_data_cfg_finalize (GObject *object)
 | ||||||
|  | -{
 | ||||||
|  | -	BraseroTrackDataCfgPrivate *priv;
 | ||||||
|  | -
 | ||||||
|  | -	priv = BRASERO_TRACK_DATA_CFG_PRIVATE (object);
 | ||||||
|  | -
 | ||||||
|  | -	brasero_track_data_clean_autorun (BRASERO_TRACK_DATA_CFG (object));
 | ||||||
|  | -	brasero_track_data_cfg_clean_cache (BRASERO_TRACK_DATA_CFG (object));
 | ||||||
|  | -
 | ||||||
|  | -	if (priv->shown) {
 | ||||||
|  | -		g_slist_free (priv->shown);
 | ||||||
|  | -		priv->shown = NULL;
 | ||||||
|  | -	}
 | ||||||
|  | -
 | ||||||
|  | -	if (priv->tree) {
 | ||||||
|  | -		g_object_unref (priv->tree);
 | ||||||
|  | -		priv->tree = NULL;
 | ||||||
|  | -	}
 | ||||||
|  | -
 | ||||||
|  | -	G_OBJECT_CLASS (brasero_track_data_cfg_parent_class)->finalize (object);
 | ||||||
|  | -}
 | ||||||
|  | -
 | ||||||
|  | -static void
 | ||||||
|  |  brasero_track_data_cfg_iface_init (gpointer g_iface, gpointer data) | ||||||
|  |  { | ||||||
|  |  	GtkTreeModelIface *iface = g_iface; | ||||||
|  | @@ -3158,6 +3135,88 @@ brasero_track_data_cfg_init (BraseroTrackDataCfg *object)
 | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |  static void | ||||||
|  | +brasero_track_data_cfg_finalize (GObject *object)
 | ||||||
|  | +{
 | ||||||
|  | +	BraseroTrackDataCfgPrivate *priv;
 | ||||||
|  | +
 | ||||||
|  | +	priv = BRASERO_TRACK_DATA_CFG_PRIVATE (object);
 | ||||||
|  | +
 | ||||||
|  | +	brasero_track_data_clean_autorun (BRASERO_TRACK_DATA_CFG (object));
 | ||||||
|  | +	brasero_track_data_cfg_clean_cache (BRASERO_TRACK_DATA_CFG (object));
 | ||||||
|  | +
 | ||||||
|  | +	if (priv->shown) {
 | ||||||
|  | +		g_slist_free (priv->shown);
 | ||||||
|  | +		priv->shown = NULL;
 | ||||||
|  | +	}
 | ||||||
|  | +
 | ||||||
|  | +	if (priv->tree) {
 | ||||||
|  | +		/* This object could outlive us just for some time
 | ||||||
|  | +		 * so we better remove all signals.
 | ||||||
|  | +		 * When an image URI is detected it can happen
 | ||||||
|  | +		 * that we'll be destroyed. */
 | ||||||
|  | +		g_signal_handlers_disconnect_by_func (priv->tree,
 | ||||||
|  | +		                                      brasero_track_data_cfg_node_added,
 | ||||||
|  | +		                                      object);
 | ||||||
|  | +		g_signal_handlers_disconnect_by_func (priv->tree,
 | ||||||
|  | +		                                      brasero_track_data_cfg_node_changed,
 | ||||||
|  | +		                                      object);
 | ||||||
|  | +		g_signal_handlers_disconnect_by_func (priv->tree,
 | ||||||
|  | +		                                      brasero_track_data_cfg_node_removed,
 | ||||||
|  | +		                                      object);
 | ||||||
|  | +		g_signal_handlers_disconnect_by_func (priv->tree,
 | ||||||
|  | +		                                      brasero_track_data_cfg_node_reordered,
 | ||||||
|  | +		                                      object);
 | ||||||
|  | +		g_signal_handlers_disconnect_by_func (priv->tree,
 | ||||||
|  | +		                                      brasero_track_data_cfg_size_changed_cb,
 | ||||||
|  | +		                                      object);
 | ||||||
|  | +		g_signal_handlers_disconnect_by_func (priv->tree,
 | ||||||
|  | +		                                      brasero_track_data_cfg_session_available_cb,
 | ||||||
|  | +		                                      object);
 | ||||||
|  | +		g_signal_handlers_disconnect_by_func (priv->tree,
 | ||||||
|  | +		                                      brasero_track_data_cfg_session_loaded_cb,
 | ||||||
|  | +		                                      object);
 | ||||||
|  | +		g_signal_handlers_disconnect_by_func (priv->tree,
 | ||||||
|  | +		                                      brasero_track_data_cfg_project_loaded,
 | ||||||
|  | +		                                      object);
 | ||||||
|  | +		g_signal_handlers_disconnect_by_func (priv->tree,
 | ||||||
|  | +		                                      brasero_track_data_cfg_activity_changed,
 | ||||||
|  | +		                                      object);
 | ||||||
|  | +		g_signal_handlers_disconnect_by_func (priv->tree,
 | ||||||
|  | +		                                      brasero_track_data_cfg_deep_directory,
 | ||||||
|  | +		                                      object);
 | ||||||
|  | +		g_signal_handlers_disconnect_by_func (priv->tree,
 | ||||||
|  | +		                                      brasero_track_data_cfg_2G_file,
 | ||||||
|  | +		                                      object);
 | ||||||
|  | +		g_signal_handlers_disconnect_by_func (priv->tree,
 | ||||||
|  | +		                                      brasero_track_data_cfg_unreadable_uri_cb,
 | ||||||
|  | +		                                      object);
 | ||||||
|  | +		g_signal_handlers_disconnect_by_func (priv->tree,
 | ||||||
|  | +		                                      brasero_track_data_cfg_unknown_uri_cb,
 | ||||||
|  | +		                                      object);
 | ||||||
|  | +		g_signal_handlers_disconnect_by_func (priv->tree,
 | ||||||
|  | +		                                      brasero_track_data_cfg_recursive_uri_cb,
 | ||||||
|  | +		                                      object);
 | ||||||
|  | +		g_signal_handlers_disconnect_by_func (priv->tree,
 | ||||||
|  | +		                                      brasero_track_data_cfg_image_uri_cb,
 | ||||||
|  | +		                                      object);
 | ||||||
|  | +		g_signal_handlers_disconnect_by_func (priv->tree,
 | ||||||
|  | +		                                      brasero_track_data_cfg_virtual_sibling_cb,
 | ||||||
|  | +		                                      object);
 | ||||||
|  | +		g_signal_handlers_disconnect_by_func (priv->tree,
 | ||||||
|  | +		                                      brasero_track_data_cfg_name_collision_cb,
 | ||||||
|  | +		                                      object);
 | ||||||
|  | +		g_signal_handlers_disconnect_by_func (priv->tree,
 | ||||||
|  | +		                                      brasero_track_data_cfg_joliet_rename_cb,
 | ||||||
|  | +		                                      object);
 | ||||||
|  | +
 | ||||||
|  | +		g_object_unref (priv->tree);
 | ||||||
|  | +		priv->tree = NULL;
 | ||||||
|  | +	}
 | ||||||
|  | +
 | ||||||
|  | +	G_OBJECT_CLASS (brasero_track_data_cfg_parent_class)->finalize (object);
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +static void
 | ||||||
|  |  brasero_track_data_cfg_class_init (BraseroTrackDataCfgClass *klass) | ||||||
|  |  { | ||||||
|  |  	GObjectClass *object_class = G_OBJECT_CLASS (klass); | ||||||
|  | diff --git a/libbrasero-utils/brasero-io.c b/libbrasero-utils/brasero-io.c
 | ||||||
|  | index cfeb4d5..bd12861 100644
 | ||||||
|  | --- a/libbrasero-utils/brasero-io.c
 | ||||||
|  | +++ b/libbrasero-utils/brasero-io.c
 | ||||||
|  | @@ -364,6 +364,11 @@ brasero_io_return_result_idle (gpointer callback_data)
 | ||||||
|  |  		g_mutex_unlock (priv->lock); | ||||||
|  |   | ||||||
|  |  		data = result->callback_data; | ||||||
|  | +
 | ||||||
|  | +		/* This is to make sure the object lives
 | ||||||
|  | +		 * as long as we need it. */
 | ||||||
|  | +		g_object_ref (base->object);
 | ||||||
|  | +
 | ||||||
|  |  		if (result->uri || result->info || result->error) | ||||||
|  |  			result->base->callback (base->object, | ||||||
|  |  						result->error, | ||||||
|  | @@ -371,12 +376,14 @@ brasero_io_return_result_idle (gpointer callback_data)
 | ||||||
|  |  						result->info, | ||||||
|  |  						data? data->callback_data:NULL); | ||||||
|  |   | ||||||
|  | -		/* Else this is just to call destroy () for callback data */
 | ||||||
|  | +		/* call destroy () for callback data */
 | ||||||
|  |  		brasero_io_unref_result_callback_data (data, | ||||||
|  |  						       base->object, | ||||||
|  |  						       base->destroy, | ||||||
|  |  						       FALSE); | ||||||
|  |   | ||||||
|  | +		g_object_unref (base->object);
 | ||||||
|  | +
 | ||||||
|  |  		brasero_io_job_result_free (result); | ||||||
|  |   | ||||||
|  |  		g_mutex_lock (priv->lock); | ||||||
|  | 
 | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user