cursor: fix fd leak and a segfault
authorPekka Paalanen <ppaalanen@gmail.com>
Tue, 10 Jul 2012 10:05:03 +0000 (13:05 +0300)
committerKristian Høgsberg <krh@bitplanet.net>
Tue, 10 Jul 2012 18:11:00 +0000 (14:11 -0400)
- 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@gmail.com>
cursor/wayland-cursor.c

index c41860a..186ab6f 100644 (file)
@@ -108,6 +108,7 @@ shm_pool_destroy(struct shm_pool *pool)
 {
        munmap(pool->data, pool->size);
        wl_shm_pool_destroy(pool->pool);
+       close(pool->fd);
        free(pool);
 }
 
@@ -281,6 +282,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);