commit 892ffcb
Michael Forney
·
2014-08-03 21:54:16 +0000 UTC
parent bdd480c
bindings: Handle failure in wl_array_add
2 files changed,
+18,
-8
+10,
-5
1@@ -29,6 +29,7 @@
2 #include "seat.h"
3 #include "util.h"
4
5+#include <errno.h>
6 #include <wayland-util.h>
7
8 struct binding
9@@ -161,9 +162,9 @@ void swc_bindings_finalize()
10 }
11
12 EXPORT
13-void swc_add_binding(enum swc_binding_type type,
14- uint32_t modifiers, uint32_t value,
15- swc_binding_handler_t handler, void * data)
16+int swc_add_binding(enum swc_binding_type type,
17+ uint32_t modifiers, uint32_t value,
18+ swc_binding_handler_t handler, void * data)
19 {
20 struct binding * binding;
21 struct wl_array * bindings;
22@@ -177,13 +178,17 @@ void swc_add_binding(enum swc_binding_type type,
23 bindings = &button_bindings;
24 break;
25 default:
26- return;
27+ return -EINVAL;
28 }
29
30- binding = wl_array_add(bindings, sizeof *binding);
31+ if (!(binding = wl_array_add(bindings, sizeof *binding)))
32+ return -ENOMEM;
33+
34 binding->value = value;
35 binding->modifiers = modifiers;
36 binding->handler = handler;
37 binding->data = data;
38+
39+ return 0;
40 }
41
+8,
-3
1@@ -231,9 +231,14 @@ enum swc_binding_type
2 typedef void (* swc_binding_handler_t)(void * data, uint32_t time,
3 uint32_t value, uint32_t state);
4
5-void swc_add_binding(enum swc_binding_type type,
6- uint32_t modifiers, uint32_t value,
7- swc_binding_handler_t handler, void * data);
8+/**
9+ * Register a new input binding.
10+ *
11+ * Returns 0 on success, negative error code otherwise.
12+ */
13+int swc_add_binding(enum swc_binding_type type,
14+ uint32_t modifiers, uint32_t value,
15+ swc_binding_handler_t handler, void * data);
16
17 /* }}} */
18