diff --git a/gio/glib-compile-resources.c b/gio/glib-compile-resources.c index 31e56241b..a18656399 100644 --- a/gio/glib-compile-resources.c +++ b/gio/glib-compile-resources.c @@ -272,6 +272,7 @@ end_element (GMarkupParseContext *context, if (state->preproc_options) { gchar **options; + gchar *stderr_child = NULL; guint i; gboolean xml_stripblanks = FALSE; gboolean to_pixdata = FALSE; @@ -324,9 +325,8 @@ end_element (GMarkupParseContext *context, g_assert (argc <= G_N_ELEMENTS (argv)); if (!g_spawn_sync (NULL /* cwd */, argv, NULL /* envv */, - G_SPAWN_STDOUT_TO_DEV_NULL | - G_SPAWN_STDERR_TO_DEV_NULL, - NULL, NULL, NULL, NULL, &status, &my_error)) + G_SPAWN_STDOUT_TO_DEV_NULL, + NULL, NULL, NULL, &stderr_child, &status, &my_error)) { g_propagate_error (error, my_error); goto cleanup; @@ -334,12 +334,13 @@ end_element (GMarkupParseContext *context, #ifdef HAVE_SYS_WAIT_H if (!WIFEXITED (status) || WEXITSTATUS (status) != 0) { - g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, - _("Error processing input file with xmllint")); + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + _("Error processing input file with xmllint:\n%s"), stderr_child); goto cleanup; } #endif + g_free (stderr_child); g_free (real_file); real_file = g_strdup (tmp_file); } @@ -347,6 +348,7 @@ end_element (GMarkupParseContext *context, if (to_pixdata) { gchar *argv[4]; + gchar *stderr_child = NULL; int status, fd, argc; if (gdk_pixbuf_pixdata == NULL) @@ -379,9 +381,8 @@ end_element (GMarkupParseContext *context, g_assert (argc <= G_N_ELEMENTS (argv)); if (!g_spawn_sync (NULL /* cwd */, argv, NULL /* envv */, - G_SPAWN_STDOUT_TO_DEV_NULL | - G_SPAWN_STDERR_TO_DEV_NULL, - NULL, NULL, NULL, NULL, &status, &my_error)) + G_SPAWN_STDOUT_TO_DEV_NULL, + NULL, NULL, NULL, &stderr_child, &status, &my_error)) { g_propagate_error (error, my_error); goto cleanup; @@ -389,12 +390,13 @@ end_element (GMarkupParseContext *context, #ifdef HAVE_SYS_WAIT_H if (!WIFEXITED (status) || WEXITSTATUS (status) != 0) { - g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, - _("Error processing input file with to-pixdata")); + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + _("Error processing input file with to-pixdata:\n%s"), stderr_child); goto cleanup; } #endif + g_free (stderr_child); g_free (real_file); real_file = g_strdup (tmp_file2); }