From: Cody Russell Date: Thu, 15 Oct 2009 02:24:30 +0000 (-0500) Subject: GTypeModule derived class unref does not unload plugin X-Git-Url: http://git.openbox.org/?a=commitdiff_plain;h=8eebc189440693922e23298a761189cfbe71f796;p=dana%2Fcg-glib.git GTypeModule derived class unref does not unload plugin Correctly unref the pclass. Patch by Chris Wilson and Tim Janik. https://bugzilla.gnome.org/show_bug.cgi?id=350200 --- diff --git a/gobject/gtype.c b/gobject/gtype.c index c6dff7f8..d5822422 100644 --- a/gobject/gtype.c +++ b/gobject/gtype.c @@ -2652,13 +2652,15 @@ g_type_class_ref (GType type) */ if (!node->data->class.class) /* class uninitialized */ { - /* acquire reference on parent class */ + /* we need an initialized parent class for initializing derived classes */ GTypeClass *pclass = ptype ? g_type_class_ref (ptype) : NULL; G_WRITE_LOCK (&type_rw_lock); if (node->data->class.class) /* class was initialized during parent class initialization? */ INVALID_RECURSION ("g_type_plugin_*", node->plugin, NODE_NAME (node)); type_class_init_Wm (node, pclass); G_WRITE_UNLOCK (&type_rw_lock); + if (pclass) + g_type_class_unref (pclass); } g_static_rec_mutex_unlock (&class_init_rec_mutex);