diff --git a/src/st/st-theme-node.c b/src/st/st-theme-node.c index 75df63774..5582c7589 100644 --- a/src/st/st-theme-node.c +++ b/src/st/st-theme-node.c @@ -66,11 +66,30 @@ st_theme_node_class_init (StThemeNodeClass *klass) object_class->finalize = st_theme_node_finalize; } +static void +maybe_free_properties (StThemeNode *node) +{ + if (node->properties) + { + g_free (node->properties); + node->properties = NULL; + node->n_properties = 0; + } + + if (node->inline_properties) + { + /* This destroys the list, not just the head of the list */ + cr_declaration_destroy (node->inline_properties); + node->inline_properties = NULL; + } +} + static void on_custom_stylesheets_changed (StTheme *theme, gpointer data) { StThemeNode *node = data; + maybe_free_properties (node); node->properties_computed = FALSE; } @@ -119,18 +138,7 @@ st_theme_node_finalize (GObject *object) g_strfreev (node->pseudo_classes); g_free (node->inline_style); - if (node->properties) - { - g_free (node->properties); - node->properties = NULL; - node->n_properties = 0; - } - - if (node->inline_properties) - { - /* This destroys the list, not just the head of the list */ - cr_declaration_destroy (node->inline_properties); - } + maybe_free_properties (node); if (node->font_desc) {