summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS7
-rw-r--r--meson.build2
-rw-r--r--pango/pango-layout.c1
-rw-r--r--tests/test-break.c14
-rw-r--r--tests/test-itemize.c3
-rw-r--r--tests/test-layout.c3
-rw-r--r--tests/testboundaries_ucd.c2
-rw-r--r--tests/testmisc.c20
8 files changed, 49 insertions, 3 deletions
diff --git a/NEWS b/NEWS
index 6e2c729c..6ae47d0b 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,10 @@
+Overview of changes in 1.45.4
+=============================
+- Fix build on Windows
+- Fix a pidgin crash
+- fc: Always reject unsupported font formats
+- coretext: Fix cairo scaling
+
Overview of changes in 1.45.3
=============================
- Fix pango_attr_list_change
diff --git a/meson.build b/meson.build
index c0b228ea..d6a50c87 100644
--- a/meson.build
+++ b/meson.build
@@ -1,5 +1,5 @@
project('pango', 'c', 'cpp',
- version: '1.45.3',
+ version: '1.45.4',
license: 'LGPLv2.1+',
default_options: [
'buildtype=debugoptimized',
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/test-break.c b/tests/test-break.c
index df9b78e2..6f4019e1 100644
--- a/tests/test-break.c
+++ b/tests/test-break.c
@@ -34,7 +34,7 @@
static PangoContext *context;
-static void
+static gboolean
test_file (const gchar *filename, GString *string)
{
gchar *contents;
@@ -73,9 +73,13 @@ test_file (const gchar *filename, GString *string)
if (pango_layout_get_unknown_glyphs_count (layout) > 0)
{
+#if 0
+ // See https://github.com/mesonbuild/meson/issues/7515
char *msg = g_strdup_printf ("Missing glyphs - skipping %s. Maybe fonts are missing?", filename);
g_test_skip (msg);
g_free (msg);
+#endif
+ return FALSE;
}
pango_layout_get_log_attrs (layout, &attrs, &len);
@@ -222,6 +226,8 @@ test_file (const gchar *filename, GString *string)
g_free (attrs);
g_free (contents);
pango_attr_list_unref (attributes);
+
+ return TRUE;
}
static gchar *
@@ -253,9 +259,12 @@ test_break (gconstpointer d)
setlocale (LC_ALL, "en_US.utf8");
if (strstr (setlocale (LC_ALL, NULL), "en_US") == NULL)
{
+#if 0
+ // See https://github.com/mesonbuild/meson/issues/7515
char *msg = g_strdup_printf ("Locale en_US.UTF-8 not available, skipping break %s", filename);
g_test_skip (msg);
g_free (msg);
+#endif
return;
}
@@ -263,7 +272,8 @@ test_break (gconstpointer d)
dump = g_string_sized_new (0);
- test_file (filename, dump);
+ if (!test_file (filename, dump))
+ return;
diff = diff_with_file (expected_file, dump->str, dump->len, &error);
g_assert_no_error (error);
diff --git a/tests/test-itemize.c b/tests/test-itemize.c
index 3c58e18f..cd145e40 100644
--- a/tests/test-itemize.c
+++ b/tests/test-itemize.c
@@ -241,9 +241,12 @@ test_itemize (gconstpointer d)
setlocale (LC_ALL, "en_US.utf8");
if (strstr (setlocale (LC_ALL, NULL), "en_US") == NULL)
{
+#if 0
+ // See https://github.com/mesonbuild/meson/issues/7515
char *msg = g_strdup_printf ("Locale en_US.UTF-8 not available, skipping itemization %s", filename);
g_test_skip (msg);
g_free (msg);
+#endif
return;
}
diff --git a/tests/test-layout.c b/tests/test-layout.c
index 52617ce6..58ab46eb 100644
--- a/tests/test-layout.c
+++ b/tests/test-layout.c
@@ -308,9 +308,12 @@ test_layout (gconstpointer d)
setlocale (LC_ALL, "en_US.utf8");
if (strstr (setlocale (LC_ALL, NULL), "en_US") == NULL)
{
+#if 0
+ // See https://github.com/mesonbuild/meson/issues/7515
char *msg = g_strdup_printf ("Locale en_US.UTF-8 not available, skipping layout %s", filename);
g_test_skip (msg);
g_free (msg);
+#endif
return;
}
diff --git a/tests/testboundaries_ucd.c b/tests/testboundaries_ucd.c
index 18ab94cc..1f0276e6 100644
--- a/tests/testboundaries_ucd.c
+++ b/tests/testboundaries_ucd.c
@@ -232,7 +232,9 @@ do_test (const gchar *filename,
channel = g_io_channel_new_file (filename, "r", &error);
if (g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT))
{
+#if 0
g_test_skip ("Test file not found");
+#endif
return;
}
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 ();
}