diff options
Diffstat (limited to 'pango/pangofc-fontmap.c')
-rw-r--r-- | pango/pangofc-fontmap.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/pango/pangofc-fontmap.c b/pango/pangofc-fontmap.c index 0df9de9f..ade1b38a 100644 --- a/pango/pangofc-fontmap.c +++ b/pango/pangofc-fontmap.c @@ -917,14 +917,9 @@ pango_fc_patterns_ref (PangoFcPatterns *pats) } static void -pango_fc_patterns_unref (PangoFcPatterns *pats) +free_patterns (gpointer data) { - g_return_if_fail (pats->ref_count > 0); - - pats->ref_count--; - - if (pats->ref_count) - return; + PangoFcPatterns *pats = data; /* Only remove from fontmap hash if we are in it. This is not necessarily * the case after a cache_clear() call. */ @@ -944,7 +939,19 @@ pango_fc_patterns_unref (PangoFcPatterns *pats) g_cond_clear (&pats->cond); g_mutex_clear (&pats->mutex); +} + +static void +pango_fc_patterns_unref (PangoFcPatterns *pats) +{ + g_return_if_fail (pats->ref_count > 0); + + pats->ref_count--; + + if (pats->ref_count) + return; + free_patterns (pats); g_slice_free (PangoFcPatterns, pats); } |