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>
This commit is contained in:
Simon McVittie 2011-10-03 18:48:15 +01:00
parent 29a71915d8
commit 5bed8317ea

View File

@ -2667,6 +2667,12 @@ g_type_register_static_simple (GType parent_type,
{ {
GTypeInfo info; 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.class_size = class_size;
info.base_init = NULL; info.base_init = NULL;
info.base_finalize = NULL; info.base_finalize = NULL;