diff options
author | Marc-André Lureau <marcandre.lureau@gmail.com> | 2013-03-20 23:12:56 +0100 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2013-03-23 15:50:09 -0400 |
commit | 564b4e667a046ff1e3eadff8de465496746a24ee (patch) | |
tree | f8ce0e048aacde84a836c79ea57b1bb38e945396 /gdk/win32 | |
parent | 7ffaab3f914e1f6f96efc1673a0a8dd8f9cbebaa (diff) | |
download | gtk+-564b4e667a046ff1e3eadff8de465496746a24ee.tar.gz |
win32: do not crash on invalid utf8 conversion
g_utf8_to_utf16() is not guaranteed to succeed. Check the error
and return if it failed.
https://bugzilla.gnome.org/show_bug.cgi?id=696232
Diffstat (limited to 'gdk/win32')
-rw-r--r-- | gdk/win32/gdkproperty-win32.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/gdk/win32/gdkproperty-win32.c b/gdk/win32/gdkproperty-win32.c index 7a3671beb5..a260322c25 100644 --- a/gdk/win32/gdkproperty-win32.c +++ b/gdk/win32/gdkproperty-win32.c @@ -150,6 +150,7 @@ _gdk_win32_window_change_property (GdkWindow *window, guchar *ucptr; wchar_t *wcptr, *p; glong wclen; + GError *err = NULL; g_return_if_fail (window != NULL); g_return_if_fail (GDK_IS_WINDOW (window)); @@ -193,7 +194,13 @@ _gdk_win32_window_change_property (GdkWindow *window, return; } - wcptr = g_utf8_to_utf16 ((char *) data, nelements, NULL, &wclen, NULL); + wcptr = g_utf8_to_utf16 ((char *) data, nelements, NULL, &wclen, &err); + if (err != NULL) + { + g_warning ("Failed to convert utf8: %s", err->message); + g_clear_error (&err); + return; + } wclen++; /* Terminating 0 */ size = wclen * 2; |