Catch cases of forgotten g_type_add_private(). (#148368, Tommi Komulainen)
authorMatthias Clasen <mclasen@redhat.com>
Wed, 28 Jul 2004 15:32:07 +0000 (15:32 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Wed, 28 Jul 2004 15:32:07 +0000 (15:32 +0000)
2004-07-28  Matthias Clasen  <mclasen@redhat.com>

* gtype.c (g_type_instance_get_private): Catch cases of
forgotten g_type_add_private().  (#148368, Tommi Komulainen)

gobject/ChangeLog
gobject/gtype.c

index 8971e69..a962b16 100644 (file)
@@ -1,7 +1,12 @@
+2004-07-28  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtype.c (g_type_instance_get_private): Catch cases of 
+       forgotten g_type_add_private().  (#148368, Tommi Komulainen) 
+
 2004-07-21  Matthias Clasen  <mclasen@redhat.com>
 
        * glib-genmarshal.c (put_marshal_value_getters): Use the 
-       correct fields for enums and flags.  (#145015,Tommi Komulainen) 
+       correct fields for enums and flags.  (#145015, Tommi Komulainen) 
 
 Sun Jul 18 18:03:08 2004  Soeren Sandmann  <sandmann@daimi.au.dk>
 
index 3b773ae..3808ed1 100644 (file)
@@ -3585,6 +3585,12 @@ g_type_instance_get_private (GTypeInstance *instance,
       parent_node = lookup_type_node_I (NODE_PARENT_TYPE (private_node));
       g_assert (parent_node->data && parent_node->data->common.ref_count);
 
+      if (G_UNLIKELY (private_node->data->instance.private_size == parent_node->data->instance.private_size))
+       {
+         g_warning ("g_type_get_private() requires a prior call to g_type_add_private()");
+         return NULL;
+       }
+
       offset += ALIGN_STRUCT (parent_node->data->instance.private_size);
     }