gtkimcontexttime.c: Check context_ime->client_window is not NULL

Be a bit more careful in get_pango_attr_list() and
get_utf8_preedit_string() to ensure that the client_window is properly
created before proceeding, to avoid access violation/segfault crashes on
Windows with IME installed, especially when running the pickers demo.

https://bugzilla.gnome.org/show_bug.cgi?id=682919
This commit is contained in:
Chun-wei Fan 2012-08-29 14:03:46 +08:00 committed by Matthias Clasen
parent d05191a010
commit a866ed7378

View File

@ -375,6 +375,8 @@ get_utf8_preedit_string (GtkIMContextIME *context_ime, gint *pos_ret)
if (pos_ret) if (pos_ret)
*pos_ret = 0; *pos_ret = 0;
if (!context_ime->client_window)
return g_strdup ("");
hwnd = GDK_WINDOW_HWND (context_ime->client_window); hwnd = GDK_WINDOW_HWND (context_ime->client_window);
himc = ImmGetContext (hwnd); himc = ImmGetContext (hwnd);
if (!himc) if (!himc)
@ -434,6 +436,8 @@ get_pango_attr_list (GtkIMContextIME *context_ime, const gchar *utf8str)
HWND hwnd; HWND hwnd;
HIMC himc; HIMC himc;
if (!context_ime->client_window)
return attrs;
hwnd = GDK_WINDOW_HWND (context_ime->client_window); hwnd = GDK_WINDOW_HWND (context_ime->client_window);
himc = ImmGetContext (hwnd); himc = ImmGetContext (hwnd);
if (!himc) if (!himc)