commit 21b4199
Michael Forney
·
2014-01-20 23:29:14 +0000 UTC
parent 58da3b4
evdev_device: Fix error handling
1 files changed,
+11,
-9
+11,
-9
1@@ -200,25 +200,25 @@ struct swc_evdev_device * swc_evdev_device_new
2 if (device->fd == -1)
3 {
4 ERROR("Failed to open input device at %s\n", path);
5- goto error0;
6+ goto error1;
7 }
8
9+ if (!(device->path = strdup(path)))
10+ goto error2;
11+
12 if (libevdev_new_from_fd(device->fd, &device->dev) != 0)
13 {
14 ERROR("Failed to create libevdev device\n");
15- goto error1;
16+ goto error3;
17 }
18
19- if (!(device->path = strdup(path)))
20- goto error2;
21-
22 device->source = wl_event_loop_add_fd
23 (swc.event_loop, device->fd, WL_EVENT_READABLE, handle_data, device);
24
25 if (!device->source)
26 {
27 ERROR("Failed to add event source\n");
28- goto error3;
29+ goto error4;
30 }
31
32 DEBUG("Adding device %s\n", libevdev_get_name(device->dev));
33@@ -245,12 +245,14 @@ struct swc_evdev_device * swc_evdev_device_new
34
35 return device;
36
37- error3:
38+ error4:
39 libevdev_free(device->dev);
40+ error3:
41+ free(device->path);
42 error2:
43- libevdev_free(device->dev);
44- error1:
45 close(device->fd);
46+ error1:
47+ free(device);
48 error0:
49 return NULL;
50 }