Don't acquire a read lock here. (#106433, Owen Taylor)
authorMatthias Clasen <maclas@gmx.de>
Fri, 26 Dec 2003 00:36:56 +0000 (00:36 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Fri, 26 Dec 2003 00:36:56 +0000 (00:36 +0000)
Fri Dec 26 01:34:01 2003  Matthias Clasen  <maclas@gmx.de>

* gtype.c (g_type_class_peek_parent): Don't acquire a read lock
here.  (#106433, Owen Taylor)

gobject/ChangeLog
gobject/gtype.c

index c9897ae..9234342 100644 (file)
@@ -1,3 +1,8 @@
+Fri Dec 26 01:34:01 2003  Matthias Clasen  <maclas@gmx.de>
+
+       * 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  <maclas@gmx.de>
 
        * gvalue.c (g_value_peek_pointer): Use g_assert() instead of
index bce1ad0..12fb283 100644 (file)
@@ -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;
 }