summaryrefslogtreecommitdiff
path: root/gdk/win32
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2013-03-20 23:12:56 +0100
committerMatthias Clasen <mclasen@redhat.com>2013-03-23 15:50:09 -0400
commit564b4e667a046ff1e3eadff8de465496746a24ee (patch)
treef8ce0e048aacde84a836c79ea57b1bb38e945396 /gdk/win32
parent7ffaab3f914e1f6f96efc1673a0a8dd8f9cbebaa (diff)
downloadgtk+-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.c9
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;