From 5bed8317ea0dc615b02f34bde9b5dfa7374c5600 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Mon, 3 Oct 2011 18:48:15 +0100 Subject: Warn when classes/instances exceed the allowed size, if possible It's impossible to check this if the library user is using g_type_register_static, but in that case their compiler should hopefully warn about the truncation. This fixes it for G_DEFINE_TYPE and friends, at least. Bug: https://bugzilla.gnome.org/show_bug.cgi?id=659916 Signed-off-by: Simon McVittie Reviewed-by: Colin Walters --- gobject/gtype.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'gobject') diff --git a/gobject/gtype.c b/gobject/gtype.c index a96620089..a362fd502 100644 --- a/gobject/gtype.c +++ b/gobject/gtype.c @@ -2667,6 +2667,12 @@ g_type_register_static_simple (GType parent_type, { GTypeInfo info; + /* Instances are not allowed to be larger than this. If you have a big + * fixed-length array or something, point to it instead. + */ + g_return_val_if_fail (class_size <= G_MAXUINT16, G_TYPE_INVALID); + g_return_val_if_fail (instance_size <= G_MAXUINT16, G_TYPE_INVALID); + info.class_size = class_size; info.base_init = NULL; info.base_finalize = NULL; -- cgit v1.2.3