diff options
author | Matthias Clasen <mclasen@redhat.com> | 2020-07-09 12:14:18 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-07-09 12:14:18 -0400 |
commit | 75db19c78948ddfc768a043aa9a8f6a442433d2d (patch) | |
tree | ef67a9bdc94b0afccaa6a80b8b0e15559676290c /gtk/gtkcssprovider.c | |
parent | ee9f9ae05e351cf36e5f54378acf62c6d2f8c161 (diff) | |
download | gtk+-75db19c78948ddfc768a043aa9a8f6a442433d2d.tar.gz |
css: Plug a memory leak
When a rule has no styles, we don't add it
to our ruleset. Since we are not adopting
the selectors in this case, we must free them.
Fixes: #2921
Diffstat (limited to 'gtk/gtkcssprovider.c')
-rw-r--r-- | gtk/gtkcssprovider.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c index 51b545f29d..7dbc6924f5 100644 --- a/gtk/gtkcssprovider.c +++ b/gtk/gtkcssprovider.c @@ -562,10 +562,12 @@ css_provider_commit (GtkCssProvider *css_provider, if (ruleset->styles == NULL) { + for (i = 0; i < n_selectors; i++) + _gtk_css_selector_free (selectors[i]); return; } - for (i = 0; i < n_selectors; i ++) + for (i = 0; i < n_selectors; i++) { GtkCssRuleset *new; @@ -915,7 +917,7 @@ parse_ruleset (GtkCssScanner *scanner) { guint i; gtk_css_parser_error_syntax (scanner->parser, "Expected '{' after selectors"); - for (i = 0; i < n_selectors; i ++) + for (i = 0; i < n_selectors; i++) _gtk_css_selector_free (selectors[i]); gtk_css_parser_skip_until (scanner->parser, GTK_CSS_TOKEN_OPEN_CURLY); gtk_css_parser_skip (scanner->parser); |