Bugfix: check symbol for NULL in binding json dump
Patch status: merged
Patch by Tony Crisci
Long description:
When dumping a binding, as is done during the binding event, check symbol for NULL. If it is, dump json null. This prevents a crash when running a binding that was configured with bindcode. fixes #1379
To apply this patch, use:
curl http://cr.i3wm.org/patch/653/raw.patch | git am
b/docs/ipc
| 19 |
@@ -769,9 +769,9 @@ input_code (integer):: |
| 20 |
If the binding was configured with +bindcode+, this will be the key code |
| 21 |
that was given for the binding. If the binding is a mouse binding, it will be |
| 22 |
the number of the mouse button that was pressed. Otherwise it will be 0. |
| 23 |
-symbol (string):: |
| 24 |
+symbol (string or null):: |
| 25 |
If this is a keyboard binding that was configured with +bindsym+, this |
| 26 |
- field will contain the given symbol. |
| 27 |
+ field will contain the given symbol. Otherwise it will be +null+. |
| 28 |
input_type (string):: |
| 29 |
This will be +"keyboard"+ or +"mouse"+ depending on whether or not this was |
| 30 |
a keyboard or a mouse binding. |
b/src/ipc.c
| 35 |
@@ -160,7 +160,10 @@ static void dump_binding(yajl_gen gen, Binding *bind) {
|
| 36 |
ystr((const char*)(bind->input_type == B_KEYBOARD ? "keyboard" : "mouse")); |
| 37 |
|
| 38 |
ystr("symbol");
|
| 39 |
- ystr(bind->symbol); |
| 40 |
+ if (bind->symbol == NULL) |
| 41 |
+ y(null); |
| 42 |
+ else |
| 43 |
+ ystr(bind->symbol); |
| 44 |
|
| 45 |
ystr("command");
|
| 46 |
ystr(bind->command); |