summaryrefslogtreecommitdiff
path: root/pango
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
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')
-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 */