From 61b5c6726887337fe6027617ca6ad935fe04eda1 Mon Sep 17 00:00:00 2001 From: Pekka Paalanen Date: Wed, 4 Jan 2012 14:09:05 +0200 Subject: [PATCH] shell: free memory on move/resize error paths Memory leaks noticed by Valgrind, when wl_input_device_update_grab() fails. Signed-off-by: Pekka Paalanen --- src/shell.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/shell.c b/src/shell.c index e2fd1e6..a39adb3 100644 --- a/src/shell.c +++ b/src/shell.c @@ -170,8 +170,10 @@ weston_surface_move(struct weston_surface *es, move->surface = es; if (wl_input_device_update_grab(&wd->input_device, - &move->grab, &es->surface, time) < 0) + &move->grab, &es->surface, time) < 0) { + free(move); return 0; + } wl_input_device_set_pointer_focus(&wd->input_device, NULL, time, 0, 0, 0, 0); @@ -268,16 +270,20 @@ weston_surface_resize(struct shell_surface *shsurf, if (edges == 0 || edges > 15 || (edges & 3) == 3 || (edges & 12) == 12) - return 0; + goto err_out; if (wl_input_device_update_grab(&wd->input_device, &resize->grab, &es->surface, time) < 0) - return 0; + goto err_out; wl_input_device_set_pointer_focus(&wd->input_device, NULL, time, 0, 0, 0, 0); return 0; + +err_out: + free(resize); + return 0; } static void -- 2.7.4