simple-shm: handle shm buffer failure

Do not segfault, if creating the shm buffer fails.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
diff --git a/clients/simple-shm.c b/clients/simple-shm.c
index 65c0eae..850567d 100644
--- a/clients/simple-shm.c
+++ b/clients/simple-shm.c
@@ -101,6 +101,17 @@
 	struct window *window;
 	
 	window = malloc(sizeof *window);
+
+	window->buffer = create_shm_buffer(display,
+					   width, height,
+					   WL_SHM_FORMAT_XRGB8888,
+					   &window->shm_data);
+
+	if (!window->buffer) {
+		free(window);
+		return NULL;
+	}
+
 	window->callback = NULL;
 	window->display = display;
 	window->width = width;
@@ -108,10 +119,6 @@
 	window->surface = wl_compositor_create_surface(display->compositor);
 	window->shell_surface = wl_shell_get_shell_surface(display->shell,
 							   window->surface);
-	window->buffer = create_shm_buffer(display,
-					   width, height,
-					   WL_SHM_FORMAT_XRGB8888,
-					   &window->shm_data);
 
 	wl_shell_surface_set_toplevel(window->shell_surface);
 
@@ -293,6 +300,8 @@
 
 	display = create_display();
 	window = create_window(display, 250, 250);
+	if (!window)
+		return 1;
 
 	sigint.sa_handler = signal_int;
 	sigemptyset(&sigint.sa_mask);