From 47bd02855f2892bf31c0ddd8fde3890da759186c Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 28 Jul 2004 15:32:07 +0000 Subject: [PATCH] Catch cases of forgotten g_type_add_private(). (#148368, Tommi Komulainen) 2004-07-28 Matthias Clasen * gtype.c (g_type_instance_get_private): Catch cases of forgotten g_type_add_private(). (#148368, Tommi Komulainen) --- gobject/ChangeLog | 7 ++++++- gobject/gtype.c | 6 ++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/gobject/ChangeLog b/gobject/ChangeLog index 8971e69..a962b16 100644 --- a/gobject/ChangeLog +++ b/gobject/ChangeLog @@ -1,7 +1,12 @@ +2004-07-28 Matthias Clasen + + * gtype.c (g_type_instance_get_private): Catch cases of + forgotten g_type_add_private(). (#148368, Tommi Komulainen) + 2004-07-21 Matthias Clasen * 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 diff --git a/gobject/gtype.c b/gobject/gtype.c index 3b773ae..3808ed1 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); } -- 2.7.4