[glib] Warn when classes/instances exceed the allowed size, if possible



commit 5bed8317ea0dc615b02f34bde9b5dfa7374c5600
Author: Simon McVittie <simon mcvittie collabora co uk>
Date:   Mon Oct 3 18:48:15 2011 +0100

    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 <simon mcvittie collabora co uk>
    Reviewed-by: Colin Walters <walters verbum org>

 gobject/gtype.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)
---
diff --git a/gobject/gtype.c b/gobject/gtype.c
index a966200..a362fd5 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;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]