summaryrefslogtreecommitdiff
path: root/gtk/gtkcssprovider.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2015-11-16 17:36:50 +0100
committerBenjamin Otte <otte@redhat.com>2015-11-16 17:39:15 +0100
commit0a4e88b79b9fa20ae0bd61ff68e99abeb5753da3 (patch)
tree686e75c7c5f6a7aa07ac4fbe5fea372e9c5c1b4d /gtk/gtkcssprovider.c
parent81cb57b260b22ab2e1a0cb2b29c7c09fd3de128c (diff)
downloadgtk+-0a4e88b79b9fa20ae0bd61ff68e99abeb5753da3.tar.gz
cssprovider: Have a section on import error
When loading a nonexisting CSS file using gtk_css_provider_load_from_file() or gtk_css_provider_load_from_path() we would emit the error using a NULL scanner. Don't do that, because we'll have a NULL section in that case and error handlers don't like that. Testcase attached. https://bugzilla.redhat.com/show_bug.cgi?id=1277959
Diffstat (limited to 'gtk/gtkcssprovider.c')
-rw-r--r--gtk/gtkcssprovider.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c
index 50108c39e5..fbe9163dfd 100644
--- a/gtk/gtkcssprovider.c
+++ b/gtk/gtkcssprovider.c
@@ -1943,6 +1943,9 @@ gtk_css_provider_error (GtkCssProvider *provider,
GError *error;
va_list args;
+ gtk_internal_return_if_fail (GTK_IS_CSS_PROVIDER (provider));
+ gtk_internal_return_if_fail (scanner != NULL);
+
va_start (args, format);
error = g_error_new_valist (domain, code, format, args);
va_end (args);
@@ -2725,21 +2728,24 @@ gtk_css_provider_load_internal (GtkCssProvider *css_provider,
}
else
{
- GtkCssSection *section;
-
- if (parent)
- section = gtk_css_section_ref (parent->section);
- else
- section = _gtk_css_section_new_for_file (GTK_CSS_SECTION_DOCUMENT, file);
+ scanner = gtk_css_scanner_new (css_provider,
+ parent,
+ parent ? parent->section : NULL,
+ file,
+ "");
+
+ gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_DOCUMENT);
gtk_css_provider_error (css_provider,
- parent,
+ scanner,
GTK_CSS_PROVIDER_ERROR,
GTK_CSS_PROVIDER_ERROR_IMPORT,
"Failed to import: %s",
load_error->message);
- gtk_css_section_unref (section);
+ gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_DOCUMENT);
+
+ gtk_css_scanner_destroy (scanner);
}
}