From 4ba1fbfdb15fdf31643b7c88ca457b0eb71a0c00 Mon Sep 17 00:00:00 2001 From: David Lechner Date: Fri, 2 Oct 2015 13:45:00 +0000 Subject: [PATCH] Bug 753992 - im-quartz discard_preedit segmentation fault Replace checking if the NSView is really a GdkWindow, which will crash in the likely event it's not a GObject, with ensuring that the parent GdkWindow is really a GdkWindowQuartz. --- modules/input/imquartz.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/modules/input/imquartz.c b/modules/input/imquartz.c index 67c7d6c..f6d8f0f 100644 --- a/modules/input/imquartz.c +++ b/modules/input/imquartz.c @@ -195,11 +195,7 @@ quartz_filter_keypress (GtkIMContext *context, return FALSE; nsview = gdk_quartz_window_get_nsview (qc->client_window); - if (GDK_IS_WINDOW (nsview)) - /* it gets GDK_WINDOW in some cases */ - return gtk_im_context_filter_keypress (qc->slave, event); - else - win = (GdkWindow *)[ (GdkQuartzView *)nsview gdkWindow]; + win = (GdkWindow *)[ (GdkQuartzView *)nsview gdkWindow]; GTK_NOTE (MISC, g_print ("client_window: %p, win: %p, nsview: %p\n", qc->client_window, win, nsview)); @@ -251,9 +247,6 @@ discard_preedit (GtkIMContext *context) if (!nsview) return; - if (GDK_IS_WINDOW (nsview)) - return; - /* reset any partial input for this NSView */ [(GdkQuartzView *)nsview unmarkText]; NSInputManager *currentInputManager = [NSInputManager currentInputManager]; @@ -334,9 +327,6 @@ quartz_set_cursor_location (GtkIMContext *context, GdkRectangle *area) qc->cursor_rect->y = area->y + y; nsview = gdk_quartz_window_get_nsview (qc->client_window); - if (GDK_IS_WINDOW (nsview)) - /* it returns GDK_WINDOW in some cases */ - return; win = (GdkWindow *)[ (GdkQuartzView*)nsview gdkWindow]; g_object_set_data (G_OBJECT (win), GIC_CURSOR_RECT, qc->cursor_rect);