[glib] Warn when classes/instances exceed the allowed size, if possible
- From: Simon McVittie <smcv src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] Warn when classes/instances exceed the allowed size, if possible
- Date: Tue, 4 Oct 2011 09:41:12 +0000 (UTC)
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]