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
This commit is contained in:
@ -158,6 +158,7 @@ gdk_property_change (GdkWindow *window,
|
|||||||
guchar *ucptr;
|
guchar *ucptr;
|
||||||
wchar_t *wcptr, *p;
|
wchar_t *wcptr, *p;
|
||||||
glong wclen;
|
glong wclen;
|
||||||
|
GError *err = NULL;
|
||||||
|
|
||||||
g_return_if_fail (window != NULL);
|
g_return_if_fail (window != NULL);
|
||||||
g_return_if_fail (GDK_IS_WINDOW (window));
|
g_return_if_fail (GDK_IS_WINDOW (window));
|
||||||
@ -207,7 +208,13 @@ gdk_property_change (GdkWindow *window,
|
|||||||
return;
|
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 */
|
wclen++; /* Terminating 0 */
|
||||||
size = wclen * 2;
|
size = wclen * 2;
|
||||||
|
Reference in New Issue
Block a user