diff options
author | Colin Walters <walters@verbum.org> | 2010-07-14 11:59:11 -0400 |
---|---|---|
committer | Colin Walters <walters@verbum.org> | 2010-07-14 11:59:11 -0400 |
commit | 05ffd85793207a40264a701de609614ba6e32d44 (patch) | |
tree | 166cff248bc9a8fba570b53b9738822d6f436635 /girepository/girmodule.c | |
parent | 30920a48928f158b25579e898f4b80b648ef2120 (diff) | |
download | gobject-introspection-05ffd85793207a40264a701de609614ba6e32d44.tar.gz |
[girepository] Actually verify header of loaded typelibs in g_irepository_require
Take a GError * for typelib loading code, validate the header. This
fixes bizarre errors from gjs where g_irepository_require would happily
load old typelibs.
Diffstat (limited to 'girepository/girmodule.c')
-rw-r--r-- | girepository/girmodule.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/girepository/girmodule.c b/girepository/girmodule.c index 1c62319f..066d5161 100644 --- a/girepository/girmodule.c +++ b/girepository/girmodule.c @@ -206,6 +206,7 @@ GTypelib * g_ir_module_build_typelib (GIrModule *module, GList *modules) { + GError *error = NULL; GTypelib *typelib; gsize length; guint i; @@ -434,7 +435,12 @@ g_ir_module_build_typelib (GIrModule *module, data = g_realloc (data, offset2); header = (Header*) data; length = header->size = offset2; - typelib = g_typelib_new_from_memory (data, length); + typelib = g_typelib_new_from_memory (data, length, &error); + if (!typelib) + { + g_error ("error building typelib: %s", + error->message); + } g_hash_table_destroy (strings); g_hash_table_destroy (types); |