summaryrefslogtreecommitdiff
path: root/pango/pangocoretext-fontmap.c
diff options
context:
space:
mode:
authorKristian Rietveld <kris@loopnest.org>2012-06-05 22:34:59 +0200
committerKristian Rietveld <kris@loopnest.org>2012-06-05 22:37:05 +0200
commit70a85d441d973883af4afb57599bc570eeea4c83 (patch)
treeefabdeee61b751df0a7e667ab321b9279257c943 /pango/pangocoretext-fontmap.c
parentb63a890627e292a2adb18d5d5f67844e3ca943ef (diff)
downloadpango-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.c25
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 */