summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--girepository/gdump.c12
-rw-r--r--girepository/girepository.c11
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[] = {