gtk: fix NULL dereferences
cover gtk: fix NULL dereferences
Hi,
Attached patch fixes some problems I encountered while testing MIPS Magnum emulation. (qemu-system-mips64el:1399): Gdk-CRITICAL **: IA__gdk_drawable_get_size: assertion GDK_IS_DRAWABLE (drawable)' failed (qemu-system-mips64el:1714): Gdk-CRITICAL **: IA__gdk_window_set_cursor: assertion GDK_IS_WINDOW (window)' failed
Hervé Poussineau (1):
gtk: do not call gtk_widget_get_window if drawing area is not
initialized
ui/gtk.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
Signature · 1 line
1.7.10.4
PATCH 1/1 gtk: do not call gtk_widget_get_window if drawing area is not initialized
This prevents gtk_widget_get_window to return a NULL pointer.
Signed-off-by Hervé Poussineau <[email protected]>
--- ui/gtk.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
ui/gtk.c +12 -0
@@ -294,6 +294,10 @@ static void gd_update_cursor(VirtualConsole *vc)return ; } +if (!gtk_widget_get_realized (vc->gfx.drawing_area)) { +return ; + } + window =gtk_widget_get_window (GTK_WIDGET (vc->gfx.drawing_area));if (s->full_screen ||qemu_input_is_absolute () || s->ptr_owner == vc) {gdk_window_set_cursor (window, s->null_cursor);
@@ -458,6 +462,10 @@ static void gd_update(DisplayChangeListener *dcl,trace_gd_update (vc->label, x, y, w, h); +if (!gtk_widget_get_realized (vc->gfx.drawing_area)) { +return ; + } +if (vc->gfx.convert) { pixman_image_composite(PIXMAN_OP_SRC, vc->gfx.ds->image, NULL, vc->gfx.convert,
@@ -540,6 +548,10 @@ static void gd_cursor_define(DisplayChangeListener *dcl,GdkPixbuf *pixbuf;GdkCursor *cursor; +if (!gtk_widget_get_realized (vc->gfx.drawing_area)) { +return ; + } + pixbuf = gdk_pixbuf_new_from_data((guchar *)(c->data), GDK_COLORSPACE_RGB, true, 8, c->width, c->height, c->width * 4,
Signature · 1 line
1.7.10.4