summaryrefslogtreecommitdiff
path: root/src/shell.c
diff options
context:
space:
mode:
authorPekka Paalanen <ppaalanen@gmail.com>2012-01-04 14:09:05 +0200
committerPekka Paalanen <ppaalanen@gmail.com>2012-01-05 09:10:49 +0200
commit61b5c6726887337fe6027617ca6ad935fe04eda1 (patch)
treea189f2a5c111260ee12d71de261c0c1d879cf889 /src/shell.c
parent86000402363e72faf1abd18d3639ff39cd8936b8 (diff)
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 <ppaalanen@gmail.com>
Diffstat (limited to 'src/shell.c')
-rw-r--r--src/shell.c12
1 files 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