summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2004-07-28 15:32:07 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2004-07-28 15:32:07 +0000
commit47bd02855f2892bf31c0ddd8fde3890da759186c (patch)
tree17c10e640fefd5fd42203dc3cada37a7b20030a0
parent889096b1ead9cf917d021bd7b82961a9799b82b6 (diff)
Catch cases of forgotten g_type_add_private(). (#148368, Tommi Komulainen)
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)
-rw-r--r--gobject/ChangeLog7
-rw-r--r--gobject/gtype.c6
2 files changed, 12 insertions, 1 deletions
diff --git a/gobject/ChangeLog b/gobject/ChangeLog
index 8971e6998..a962b169a 100644
--- a/gobject/ChangeLog
+++ b/gobject/ChangeLog
@@ -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>
diff --git a/gobject/gtype.c b/gobject/gtype.c
index 3b773ae75..3808ed1fd 100644
--- a/gobject/gtype.c
+++ b/gobject/gtype.c
@@ -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);
}