From 8eebc189440693922e23298a761189cfbe71f796 Mon Sep 17 00:00:00 2001 From: Cody Russell Date: Wed, 14 Oct 2009 21:24:30 -0500 Subject: [PATCH] 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 --- gobject/gtype.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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); -- 2.34.1