[nautilus-actions] Fix assertion 'NA_IS_OBJECT( object )' failed
- From: Pierre Wieser <pwieser src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus-actions] Fix assertion 'NA_IS_OBJECT( object )' failed
- Date: Mon, 14 Feb 2011 23:52:42 +0000 (UTC)
commit fef01903b9eee5ba4087a63042468b944782883e
Author: Pierre Wieser <pwieser trychlos org>
Date: Fri Feb 11 16:54:14 2011 +0100
Fix assertion 'NA_IS_OBJECT( object )' failed
when finalizing a modified tree view.
src/core/na-object.c | 12 ++++++------
src/nact/nact-main-window.c | 6 +++++-
2 files changed, 11 insertions(+), 7 deletions(-)
---
diff --git a/src/core/na-object.c b/src/core/na-object.c
index 3ba8197..e6300fb 100644
--- a/src/core/na-object.c
+++ b/src/core/na-object.c
@@ -670,13 +670,13 @@ na_object_object_ref( NAObject *object )
void
na_object_object_unref( NAObject *object )
{
- if( NA_IS_OBJECT( object )){
- if( !object->private->dispose_has_run ){
- if( NA_IS_OBJECT_ITEM( object )){
- g_list_foreach( na_object_get_items( object ), ( GFunc ) na_object_object_unref, NULL );
- }
- g_object_unref( object );
+ g_return_if_fail( NA_IS_OBJECT( object ));
+
+ if( !object->private->dispose_has_run ){
+ if( NA_IS_OBJECT_ITEM( object )){
+ g_list_foreach( na_object_get_items( object ), ( GFunc ) na_object_object_unref, NULL );
}
+ g_object_unref( object );
}
}
diff --git a/src/nact/nact-main-window.c b/src/nact/nact-main-window.c
index 0dc87a8..74718d2 100644
--- a/src/nact/nact-main-window.c
+++ b/src/nact/nact-main-window.c
@@ -740,7 +740,6 @@ instance_dispose( GObject *window )
self->private->dispose_has_run = TRUE;
- g_object_unref( self->private->items_view );
g_object_unref( self->private->clipboard );
g_object_unref( self->private->menubar );
@@ -761,6 +760,11 @@ instance_dispose( GObject *window )
nact_iexecution_tab_dispose( NACT_IEXECUTION_TAB( window ));
nact_iproperties_tab_dispose( NACT_IPROPERTIES_TAB( window ));
+ /* unref items view at last as gtk_tree_model_store_clear() will
+ * finalize all objects, thus invaliditing all our references
+ */
+ g_object_unref( self->private->items_view );
+
/* chain up to the parent class */
if( G_OBJECT_CLASS( st_parent_class )->dispose ){
G_OBJECT_CLASS( st_parent_class )->dispose( window );
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]