summaryrefslogtreecommitdiff
path: root/girepository/girmodule.c
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2010-07-14 11:59:11 -0400
committerColin Walters <walters@verbum.org>2010-07-14 11:59:11 -0400
commit05ffd85793207a40264a701de609614ba6e32d44 (patch)
tree166cff248bc9a8fba570b53b9738822d6f436635 /girepository/girmodule.c
parent30920a48928f158b25579e898f4b80b648ef2120 (diff)
downloadgobject-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.c8
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);