[PATCH v2 9/9] evdev: simplify error path for device creation
Kristian Høgsberg
krh at bitplanet.net
Fri Oct 28 10:15:58 PDT 2011
On Wed, Oct 26, 2011 at 8:55 AM, Tiago Vignatti
<tiago.vignatti at intel.com> wrote:
> Signed-off-by: Tiago Vignatti <tiago.vignatti at intel.com>
> ---
> compositor/evdev.c | 33 ++++++++++++++-------------------
> 1 files changed, 14 insertions(+), 19 deletions(-)
Thanks, applied.
> 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