[PATCH wayland 2/2] cursor: fix some leaks
Pekka Paalanen
ppaalanen at gmail.com
Mon Jul 9 03:34:35 PDT 2012
- don't leak memory in shm_pool_create() on failure
- don't leak fd in shm_pool_destroy()
- return NULL from wl_cursor_theme_load() if pool fails
Tha last one fixes a segfault, when shm_pool_create() has failed.
Signed-off-by: Pekka Paalanen <ppaalanen at gmail.com>
---
cursor/wayland-cursor.c | 11 ++++++++++-
1 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/cursor/wayland-cursor.c b/cursor/wayland-cursor.c
index 1a312b0..bd9dfc7 100644
--- a/cursor/wayland-cursor.c
+++ b/cursor/wayland-cursor.c
@@ -49,14 +49,17 @@ shm_pool_create(struct wl_shm *shm, int size)
return NULL;
pool->fd = os_create_anonymous_file(size);
- if (pool->fd < 0)
+ if (pool->fd < 0) {
+ free(pool);
return NULL;
+ }
pool->data = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED,
pool->fd, 0);
if (pool->data == MAP_FAILED) {
close(pool->fd);
+ free(pool);
return NULL;
}
@@ -104,6 +107,7 @@ shm_pool_destroy(struct shm_pool *pool)
{
munmap(pool->data, pool->size);
wl_shm_pool_destroy(pool->pool);
+ close(pool->fd);
free(pool);
}
@@ -277,6 +281,11 @@ wl_cursor_theme_load(const char *name, int size, struct wl_shm *shm)
theme->pool =
shm_pool_create(shm, size * size * 4);
+ if (!theme->pool) {
+ free(theme->name);
+ free(theme);
+ return NULL;
+ }
xcursor_load_theme(name, size, load_callback, theme);
--
1.7.8.6
More information about the wayland-devel
mailing list