summaryrefslogtreecommitdiff
path: root/gtk/gtkcssprovider.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-07-09 12:14:18 -0400
committerMatthias Clasen <mclasen@redhat.com>2020-07-09 12:14:18 -0400
commit75db19c78948ddfc768a043aa9a8f6a442433d2d (patch)
treeef67a9bdc94b0afccaa6a80b8b0e15559676290c /gtk/gtkcssprovider.c
parentee9f9ae05e351cf36e5f54378acf62c6d2f8c161 (diff)
downloadgtk+-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.c6
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);