Move call to g_type_free_instance() here from g_object_do_finalize, since
authorOwen Taylor <otaylor@redhat.com>
Sun, 10 Sep 2000 16:01:15 +0000 (16:01 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Sun, 10 Sep 2000 16:01:15 +0000 (16:01 +0000)
Sat Sep  9 20:04:13 2000  Owen Taylor  <otaylor@redhat.com>

* gobject.c (g_object_last_unref): Move call to
g_type_free_instance() here from g_object_do_finalize,
since g_type_free_instance() can unload the object's
implementation.

gobject/ChangeLog
gobject/gobject.c

index 1d1a22d..ebc75be 100644 (file)
@@ -1,3 +1,10 @@
+Sat Sep  9 20:04:13 2000  Owen Taylor  <otaylor@redhat.com>
+
+       * gobject.c (g_object_last_unref): Move call to
+       g_type_free_instance() here from g_object_do_finalize,
+       since g_type_free_instance() can unload the object's
+       implementation.
+
 2000-07-27  Tor Lillqvist  <tml@iki.fi>
 
        * gobject.c: No, don't mark glib_debug_objects for export here,
index 9dc289f..7f47335 100644 (file)
@@ -270,7 +270,10 @@ g_object_last_unref (GObject *object)
   object->ref_count -= 1;
   
   if (object->ref_count == 0)  /* may have been re-referenced meanwhile */
-    G_OBJECT_GET_CLASS (object)->finalize (object);
+    {
+      G_OBJECT_GET_CLASS (object)->finalize (object);
+      g_type_free_instance ((GTypeInstance*) object);
+    }
 }
 
 static void
@@ -296,8 +299,6 @@ g_object_do_finalize (GObject *object)
       debug_objects_count--;
     }
 #endif DEBUG_OBJECTS
-  
-  g_type_free_instance ((GTypeInstance*) object);
 }
 
 gpointer