mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-11 15:06:14 +01:00
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
This commit is contained in:
parent
e95a3b0576
commit
8eebc18944
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user