diff --git a/gtk/css/gtkcssdataurl.c b/gtk/css/gtkcssdataurl.c index 6645b4835d..cc430378f2 100644 --- a/gtk/css/gtkcssdataurl.c +++ b/gtk/css/gtkcssdataurl.c @@ -152,13 +152,23 @@ gtk_css_data_url_parse (const char *url, gsize read; gsize written; gpointer data; + GError *local_error = NULL; data = g_convert_with_fallback (bdata, bsize, "UTF-8", charset, (char *) "*", - &read, &written, NULL); + &read, &written, &local_error); g_free (bdata); + if (local_error) + { + g_propagate_error (error, local_error); + g_free (charset); + g_free (data); + return NULL; + } + + bdata = data; bsize = written; } diff --git a/testsuite/css/data.c b/testsuite/css/data.c index 3a5b722fd0..60cc2661cc 100644 --- a/testsuite/css/data.c +++ b/testsuite/css/data.c @@ -81,8 +81,8 @@ test_parse (gconstpointer data) if (test->contents) { - g_assert_nonnull (bytes); g_assert_no_error (error); + g_assert_nonnull (bytes); if (test->mimetype == NULL) g_assert_null (mimetype); else @@ -94,8 +94,8 @@ test_parse (gconstpointer data) } else { - g_assert_null (bytes); g_assert_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_FILENAME); + g_assert_null (bytes); g_error_free (error); } }