wayland-cursor: Add error handling for shm_pool_create()
authorMartin Olsson <martin@minimum.se>
Mon, 9 Jul 2012 09:35:54 +0000 (11:35 +0200)
committerKristian Høgsberg <krh@bitplanet.net>
Mon, 9 Jul 2012 21:59:08 +0000 (17:59 -0400)
cursor/wayland-cursor.c

index 7621020..36a8b54 100644 (file)
@@ -49,27 +49,29 @@ shm_pool_create(struct wl_shm *shm, int size)
 
        pool->fd = mkstemp(filename);
        if (pool->fd < 0)
-               return NULL;
+               goto err_free;
 
-       if (ftruncate(pool->fd, size) < 0) {
-               close(pool->fd);
-               return NULL;
-       }
+       if (ftruncate(pool->fd, size) < 0)
+               goto err_close;
 
        pool->data = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED,
                          pool->fd, 0);
        unlink(filename);
 
-       if (pool->data == MAP_FAILED) {
-               close(pool->fd);
-               return NULL;
-       }
+       if (pool->data == MAP_FAILED)
+               goto err_close;
 
        pool->pool = wl_shm_create_pool(shm, pool->fd, size);
        pool->size = size;
        pool->used = 0;
 
        return pool;
+
+err_close:
+       close(pool->fd);
+err_free:
+       free(pool);
+       return NULL;
 }
 
 static int