[PATCH 2/5] wayland-cursor: Add error handling for shm_pool_create()

Martin Olsson martin at minimum.se
Mon Jul 9 02:35:54 PDT 2012


---
 cursor/wayland-cursor.c |   20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/cursor/wayland-cursor.c b/cursor/wayland-cursor.c
index 7621020..36a8b54 100644
--- a/cursor/wayland-cursor.c
+++ b/cursor/wayland-cursor.c
@@ -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
-- 
1.7.9.5



More information about the wayland-devel mailing list