summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-06-09 11:23:44 -0400
committerMarco Trevisan (TreviƱo) <mail@3v1n0.net>2021-05-05 16:38:25 +0200
commit800426849efd8a3d1e9d6d26fec3adaa67a50958 (patch)
treeab2e5c9c05e548a25e1cc7c3109766f259f45bc1
parent1f75fc9089274a1fcb9ab7eb647e144f48c81fab (diff)
downloadpango-800426849efd8a3d1e9d6d26fec3adaa67a50958.tar.gz
layout: Fix a crash
pango_layout_get_effective_attributes can return NULL. But not all callers were handling that. (cherry-picked from commit 1f06c915)
-rw-r--r--pango/pango-layout.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/pango/pango-layout.c b/pango/pango-layout.c
index 16783941..84dfb39f 100644
--- a/pango/pango-layout.c
+++ b/pango/pango-layout.c
@@ -3031,17 +3031,22 @@ ensure_tab_width (PangoLayout *layout)
PangoAttribute *attr;
PangoAttrList *layout_attrs;
PangoAttrList *tmp_attrs;
- PangoAttrIterator *iter;
PangoFontDescription *font_desc = pango_font_description_copy_static (pango_context_get_font_description (layout->context));
- PangoLanguage *language;
+ PangoLanguage *language = NULL;
PangoShapeFlags shape_flags = PANGO_SHAPE_NONE;
if (pango_context_get_round_glyph_positions (layout->context))
shape_flags |= PANGO_SHAPE_ROUND_POSITIONS;
layout_attrs = pango_layout_get_effective_attributes (layout);
- iter = pango_attr_list_get_iterator (layout_attrs);
- pango_attr_iterator_get_font (iter, font_desc, &language, NULL);
+ if (layout_attrs)
+ {
+ PangoAttrIterator *iter;
+
+ iter = pango_attr_list_get_iterator (layout_attrs);
+ pango_attr_iterator_get_font (iter, font_desc, &language, NULL);
+ pango_attr_iterator_destroy (iter);
+ }
tmp_attrs = pango_attr_list_new ();
@@ -3057,7 +3062,6 @@ ensure_tab_width (PangoLayout *layout)
items = pango_itemize (layout->context, " ", 0, 1, tmp_attrs, NULL);
- pango_attr_iterator_destroy (iter);
if (layout_attrs != layout->attrs)
{
pango_attr_list_unref (layout_attrs);