diff --git a/gobject/ChangeLog b/gobject/ChangeLog index 0c38ec783..58cdbfcae 100644 --- a/gobject/ChangeLog +++ b/gobject/ChangeLog @@ -1,3 +1,8 @@ +Fri Dec 15 2006 Matthias Clasen + + * gtype.c (instance_real_class_get): Dereference the pointer + before dropping the lock. (#378078, Jonathan Matthew) + 2006-10-01 Matthias Clasen * === Released 2.12.4 === diff --git a/gobject/gtype.c b/gobject/gtype.c index 12ce66fe8..44620db6c 100644 --- a/gobject/gtype.c +++ b/gobject/gtype.c @@ -1511,11 +1511,13 @@ static inline GTypeClass* instance_real_class_get (gpointer instance) { InstanceRealClass key, *node; + GTypeClass *class; key.instance = instance; G_LOCK (instance_real_class); node = instance_real_class_bsa ? g_bsearch_array_lookup (instance_real_class_bsa, &instance_real_class_bconfig, &key) : NULL; + class = node ? node->class : NULL; G_UNLOCK (instance_real_class); - return node ? node->class : NULL; + return class; } GTypeInstance*