From 2cd1e3f91582efbee497a0069f6cbe19f324f0b3 Mon Sep 17 00:00:00 2001 From: Pan Nengyuan Date: Mon, 31 Aug 2020 09:43:10 -0400 Subject: ui/gtk-gl-area: Plug memleak in gd_gl_area_create_context() Receiving error in local variable err, and forgot to free it. This patch check the return value of 'gdk_window_create_gl_context' and 'gdk_gl_context_realize', then free err to fix it. Reported-by: Euler Robot Signed-off-by: Pan Nengyuan Message-Id: <20200831134315.1221-6-pannengyuan@huawei.com> Signed-off-by: Gerd Hoffmann --- ui/gtk-gl-area.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ui/gtk-gl-area.c b/ui/gtk-gl-area.c index 85f9d14c51..98c22d23f5 100644 --- a/ui/gtk-gl-area.c +++ b/ui/gtk-gl-area.c @@ -147,10 +147,21 @@ QEMUGLContext gd_gl_area_create_context(DisplayChangeListener *dcl, gtk_gl_area_make_current(GTK_GL_AREA(vc->gfx.drawing_area)); window = gtk_widget_get_window(vc->gfx.drawing_area); ctx = gdk_window_create_gl_context(window, &err); + if (err) { + g_printerr("Create gdk gl context failed: %s\n", err->message); + g_error_free(err); + return NULL; + } gdk_gl_context_set_required_version(ctx, params->major_ver, params->minor_ver); gdk_gl_context_realize(ctx, &err); + if (err) { + g_printerr("Realize gdk gl context failed: %s\n", err->message); + g_error_free(err); + g_clear_object(&ctx); + return NULL; + } return ctx; } -- cgit v1.2.3-55-g7522