[PATCH v2 9/9] evdev: simplify error path for device creation

Tiago Vignatti tiago.vignatti at intel.com
Wed Oct 26 05:55:29 PDT 2011


Signed-off-by: Tiago Vignatti <tiago.vignatti at intel.com>
---
 compositor/evdev.c |   33 ++++++++++++++-------------------
 1 files changed, 14 insertions(+), 19 deletions(-)

diff --git a/compositor/evdev.c b/compositor/evdev.c
index aaaf0e5..bf5be32 100644
--- a/compositor/evdev.c
+++ b/compositor/evdev.c
@@ -483,40 +483,35 @@ evdev_input_device_create(struct evdev_input *master,
 	device->devnode = strdup(path);
 
 	ec = (struct wlsc_compositor *) master->base.input_device.compositor;
-	device->output = 
+	device->output =
 		container_of(ec->output_list.next, struct wlsc_output, link);
 
 	device->master = master;
 	device->is_touchpad = 0;
 
 	device->fd = open(path, O_RDONLY);
-	if (device->fd < 0) {
-		free(device->devnode);
-		free(device);
-		fprintf(stderr, "couldn't create pointer for %s: %m\n", path);
-		return NULL;
-	}
+	if (device->fd < 0)
+		goto err0;
 
-	if (evdev_configure_device(device) == -1) {
-		close(device->fd);
-		free(device->devnode);
-		free(device);
-		return NULL;
-	}
+	if (evdev_configure_device(device) == -1)
+		goto err1;
 
 	loop = wl_display_get_event_loop(display);
 	device->source = wl_event_loop_add_fd(loop, device->fd,
 					      WL_EVENT_READABLE,
 					      evdev_input_device_data, device);
-	if (device->source == NULL) {
-		close(device->fd);
-		free(device->devnode);
-		free(device);
-		return NULL;
-	}
+	if (device->source == NULL)
+		goto err1;
 
 	wl_list_insert(master->devices_list.prev, &device->link);
 	return device;
+
+err1:
+	close(device->fd);
+err0:
+	free(device->devnode);
+	free(device);
+	return NULL;
 }
 
 static const char default_seat[] = "seat0";
-- 
1.7.5.4



More information about the wayland-devel mailing list