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