diff options
author | Pekka Paalanen <ppaalanen@gmail.com> | 2012-01-04 14:09:05 +0200 |
---|---|---|
committer | Pekka Paalanen <ppaalanen@gmail.com> | 2012-01-05 09:10:49 +0200 |
commit | 61b5c6726887337fe6027617ca6ad935fe04eda1 (patch) | |
tree | a189f2a5c111260ee12d71de261c0c1d879cf889 /src/shell.c | |
parent | 86000402363e72faf1abd18d3639ff39cd8936b8 (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.c | 12 |
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 |