diff options
author | Timm Bäder <mail@baedert.org> | 2017-03-20 19:56:22 +0100 |
---|---|---|
committer | Timm Bäder <mail@baedert.org> | 2017-03-20 20:04:26 +0100 |
commit | 12b7d30a2d390fa4755828b6dc3748695c52a365 (patch) | |
tree | 13b51c59e8796ad086dce0136efc7b8e80811161 | |
parent | c371a86f545478a4e46867afd0a9c6cf0ffe963d (diff) | |
download | gtk+-12b7d30a2d390fa4755828b6dc3748695c52a365.tar.gz |
GdkWaylandWindow: Force window titles to valid utf8
Use the new g_utf8_make_valid in case the given title is not valid utf8.
Also bump the glib requirement to 2.51.5.
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | gdk/wayland/gdkwindow-wayland.c | 18 |
2 files changed, 16 insertions, 6 deletions
diff --git a/configure.ac b/configure.ac index c91fb7d888..d59b6bc1c8 100644 --- a/configure.ac +++ b/configure.ac @@ -42,8 +42,8 @@ m4_define([gtk_binary_version], [4.0.0]) # required versions of other packages m4_define([glib_required_major], [2]) -m4_define([glib_required_minor], [49]) -m4_define([glib_required_micro], [4]) +m4_define([glib_required_minor], [51]) +m4_define([glib_required_micro], [5]) m4_define([glib_required_version], [glib_required_major.glib_required_minor.glib_required_micro]) m4_define([glib_min_required_minor], diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c index 5c09541951..17fb720472 100644 --- a/gdk/wayland/gdkwindow-wayland.c +++ b/gdk/wayland/gdkwindow-wayland.c @@ -3041,6 +3041,8 @@ gdk_wayland_window_set_title (GdkWindow *window, { GdkWindowImplWayland *impl; const char *end; + gsize title_length; + g_return_if_fail (title != NULL); if (GDK_WINDOW_DESTROYED (window)) @@ -3053,10 +3055,18 @@ gdk_wayland_window_set_title (GdkWindow *window, g_free (impl->title); - g_utf8_validate (title, MAX_WL_BUFFER_SIZE, &end); - impl->title = g_malloc (end - title + 1); - memcpy (impl->title, title, end - title); - impl->title[end - title] = '\0'; + title_length = MIN (strlen (title), MAX_WL_BUFFER_SIZE); + if (g_utf8_validate (title, title_length, &end)) + { + impl->title = g_malloc (end - title + 1); + memcpy (impl->title, title, end - title); + impl->title[end - title] = '\0'; + } + else + { + impl->title = g_utf8_make_valid (title, title_length); + g_warning ("Invalid utf8 passed to gdk_window_set_title: '%s'", title); + } gdk_wayland_window_sync_title (window); } |