diff options
author | Kristian Rietveld <kris@loopnest.org> | 2012-06-05 22:34:59 +0200 |
---|---|---|
committer | Kristian Rietveld <kris@loopnest.org> | 2012-06-05 22:37:05 +0200 |
commit | 70a85d441d973883af4afb57599bc570eeea4c83 (patch) | |
tree | efabdeee61b751df0a7e667ab321b9279257c943 /pango/pangocoretext-fontmap.c | |
parent | b63a890627e292a2adb18d5d5f67844e3ca943ef (diff) | |
download | pango-70a85d441d973883af4afb57599bc570eeea4c83.tar.gz |
coretext: don't insert item in the hash if it originated from the hash
Oversight in my fallback fix, this resulted in things being wrongly
destroyed due to unrefs. Oops.
Diffstat (limited to 'pango/pangocoretext-fontmap.c')
-rw-r--r-- | pango/pangocoretext-fontmap.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/pango/pangocoretext-fontmap.c b/pango/pangocoretext-fontmap.c index a856593e..034d0507 100644 --- a/pango/pangocoretext-fontmap.c +++ b/pango/pangocoretext-fontmap.c @@ -1284,13 +1284,11 @@ pango_core_text_font_map_load_fontset (PangoFontMap *fontmap, if (G_UNLIKELY (!fontset)) { + gboolean insert_in_hash = TRUE; + fontset = pango_core_text_fontset_new (&key, desc); - if (G_LIKELY (fontset)) - g_hash_table_insert (ctfontmap->fontset_hash, - pango_core_text_fontset_get_key (fontset), - fontset); - else + if (G_UNLIKELY (!fontset)) { /* If no font(set) could be loaded, we fallback to "Sans", * which should always work on Mac. We try to adhere to the @@ -1308,7 +1306,9 @@ pango_core_text_font_map_load_fontset (PangoFontMap *fontmap, language); fontset = g_hash_table_lookup (ctfontmap->fontset_hash, &key); - if (G_UNLIKELY (!fontset)) + if (G_LIKELY (fontset)) + insert_in_hash = FALSE; + else fontset = pango_core_text_fontset_new (&key, tmp_desc); if (G_UNLIKELY (!fontset)) @@ -1335,7 +1335,9 @@ pango_core_text_font_map_load_fontset (PangoFontMap *fontmap, } fontset = g_hash_table_lookup (ctfontmap->fontset_hash, &key); - if (G_UNLIKELY (!fontset)) + if (G_LIKELY (fontset)) + insert_in_hash = FALSE; + else fontset = pango_core_text_fontset_new (&key, tmp_desc); if (G_UNLIKELY (!fontset)) @@ -1346,11 +1348,12 @@ pango_core_text_font_map_load_fontset (PangoFontMap *fontmap, g_error ("Could not load fallback font, bailing out."); } } - - g_hash_table_insert (ctfontmap->fontset_hash, - pango_core_text_fontset_get_key (fontset), - fontset); } + + if (insert_in_hash) + g_hash_table_insert (ctfontmap->fontset_hash, + pango_core_text_fontset_get_key (fontset), + fontset); } /* Cannot use pango_core_text_fontset_key_free() here */ |