[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