diff options
-rw-r--r-- | girepository/gdump.c | 12 | ||||
-rw-r--r-- | girepository/girepository.c | 11 |
2 files changed, 19 insertions, 4 deletions
diff --git a/girepository/gdump.c b/girepository/gdump.c index 328f0752..3dc21728 100644 --- a/girepository/gdump.c +++ b/girepository/gdump.c @@ -68,6 +68,7 @@ static GType invoke_get_type (GModule *self, const char *symbol, GError **error) { GetTypeFunc sym; + GType ret; if (!g_module_symbol (self, symbol, (void**)&sym)) { @@ -78,7 +79,15 @@ invoke_get_type (GModule *self, const char *symbol, GError **error) return G_TYPE_INVALID; } - return sym (); + ret = sym (); + if (ret == G_TYPE_INVALID) + { + g_set_error (error, + G_IO_ERROR, + G_IO_ERROR_FAILED, + "Function '%s' returned G_TYPE_INVALID", symbol); + } + return ret; } static void @@ -429,7 +438,6 @@ g_irepository_dump (const char *arg, GError **error) if (type == G_TYPE_INVALID) { - g_printerr ("Invalid GType: '%s'\n", line); caught_error = TRUE; g_free (line); break; diff --git a/girepository/girepository.c b/girepository/girepository.c index 50bcfbdc..17d076d5 100644 --- a/girepository/girepository.c +++ b/girepository/girepository.c @@ -1378,8 +1378,15 @@ g_irepository_introspect_cb (const char *option_name, gpointer data, GError **error) { - gboolean ret = g_irepository_dump (value, error); - exit (ret ? 0 : 1); + GError *tmp_error = NULL; + gboolean ret = g_irepository_dump (value, &tmp_error); + if (!ret) + { + g_error ("Failed to extract GType data: %s", + tmp_error->message); + exit (1); + } + exit (0); } static const GOptionEntry introspection_args[] = { |