summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-07-30 14:18:41 +0000
committerMatthias Clasen <mclasen@redhat.com>2020-07-30 14:18:41 +0000
commit948e0b0cb5319adfa956f08c40dd1ea85855a424 (patch)
treef9231b310778a555d43aa6343941df7cebc40cd9
parente07fbc24f4b49b2fb466e54060a83d3ed3d24ff7 (diff)
parentc2c9733047a524b794ba11208c758264d266ad20 (diff)
downloadpango-948e0b0cb5319adfa956f08c40dd1ea85855a424.tar.gz
Merge branch 'pidgin-crash' into 'master'
Fix a Pidgin crash Closes #490 See merge request GNOME/pango!214
-rw-r--r--pango/pango-layout.c1
-rw-r--r--tests/testmisc.c20
2 files changed, 21 insertions, 0 deletions
diff --git a/pango/pango-layout.c b/pango/pango-layout.c
index b07c8487..92d858b2 100644
--- a/pango/pango-layout.c
+++ b/pango/pango-layout.c
@@ -1173,6 +1173,7 @@ pango_layout_set_text (PangoLayout *layout,
g_warning ("Invalid UTF-8 string passed to pango_layout_set_text()");
layout->n_chars = pango_utf8_strlen (layout->text, -1);
+ layout->length = strlen (layout->text);
layout_changed (layout);
diff --git a/tests/testmisc.c b/tests/testmisc.c
index f5583cab..9f1f24da 100644
--- a/tests/testmisc.c
+++ b/tests/testmisc.c
@@ -54,6 +54,25 @@ test_itemize_empty_crash (void)
g_object_unref (context);
}
+/* Test that pango_layout_set_text (layout, "short", 200)
+ * does not lead to a crash. (pidgin does this)
+ */
+static void
+test_short_string_crash (void)
+{
+ PangoContext *context;
+ PangoLayout *layout;
+ int width, height;
+
+ context = pango_font_map_create_context (pango_cairo_font_map_get_default ());
+ layout = pango_layout_new (context);
+ pango_layout_set_text (layout, "short text", 200);
+ pango_layout_get_pixel_size (layout, &width, &height);
+
+ g_object_unref (layout);
+ g_object_unref (context);
+}
+
int
main (int argc, char *argv[])
{
@@ -61,6 +80,7 @@ main (int argc, char *argv[])
g_test_add_func ("/layout/shape-tab-crash", test_shape_tab_crash);
g_test_add_func ("/layout/itemize-empty-crash", test_itemize_empty_crash);
+ g_test_add_func ("/layout/short-string-crash", test_short_string_crash);
return g_test_run ();
}