From 07cbd50ea880c7d4f0221d171cf8f91d253e51f7 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 26 Dec 2003 00:36:56 +0000 Subject: [PATCH] Don't acquire a read lock here. (#106433, Owen Taylor) Fri Dec 26 01:34:01 2003 Matthias Clasen * gtype.c (g_type_class_peek_parent): Don't acquire a read lock here. (#106433, Owen Taylor) --- gobject/ChangeLog | 5 +++++ gobject/gtype.c | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gobject/ChangeLog b/gobject/ChangeLog index c9897ae..9234342 100644 --- a/gobject/ChangeLog +++ b/gobject/ChangeLog @@ -1,3 +1,8 @@ +Fri Dec 26 01:34:01 2003 Matthias Clasen + + * gtype.c (g_type_class_peek_parent): Don't acquire a read lock + here. (#106433, Owen Taylor) + Wed Dec 17 23:29:17 2003 Matthias Clasen * gvalue.c (g_value_peek_pointer): Use g_assert() instead of diff --git a/gobject/gtype.c b/gobject/gtype.c index bce1ad0..12fb283 100644 --- a/gobject/gtype.c +++ b/gobject/gtype.c @@ -2490,7 +2490,10 @@ g_type_class_peek_parent (gpointer g_class) g_return_val_if_fail (g_class != NULL, NULL); node = lookup_type_node_I (G_TYPE_FROM_CLASS (g_class)); - G_READ_LOCK (&type_rw_lock); + /* We used to acquire a read lock here. That is not necessary, since + * parent->data->class.class is constant as long as the derived class + * exists. + */ if (node && node->is_classed && node->data && NODE_PARENT_TYPE (node)) { node = lookup_type_node_I (NODE_PARENT_TYPE (node)); @@ -2498,7 +2501,6 @@ g_type_class_peek_parent (gpointer g_class) } else if (NODE_PARENT_TYPE (node)) g_warning (G_STRLOC ": invalid class pointer `%p'", g_class); - G_READ_UNLOCK (&type_rw_lock); return class; } -- 2.7.4