Bugfix: check symbol for NULL in binding json dump

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
This commit is contained in:
Tony Crisci 2014-10-05 14:50:30 -04:00 committed by Michael Stapelberg
parent 3e841ac5b6
commit 6ba7728136
2 changed files with 6 additions and 3 deletions

View File

@ -769,9 +769,9 @@ input_code (integer)::
If the binding was configured with +bindcode+, this will be the key code If the binding was configured with +bindcode+, this will be the key code
that was given for the binding. If the binding is a mouse binding, it will be that was given for the binding. If the binding is a mouse binding, it will be
the number of the mouse button that was pressed. Otherwise it will be 0. the number of the mouse button that was pressed. Otherwise it will be 0.
symbol (string):: symbol (string or null)::
If this is a keyboard binding that was configured with +bindsym+, this If this is a keyboard binding that was configured with +bindsym+, this
field will contain the given symbol. field will contain the given symbol. Otherwise it will be +null+.
input_type (string):: input_type (string)::
This will be +"keyboard"+ or +"mouse"+ depending on whether or not this was This will be +"keyboard"+ or +"mouse"+ depending on whether or not this was
a keyboard or a mouse binding. a keyboard or a mouse binding.

View File

@ -160,6 +160,9 @@ static void dump_binding(yajl_gen gen, Binding *bind) {
ystr((const char*)(bind->input_type == B_KEYBOARD ? "keyboard" : "mouse")); ystr((const char*)(bind->input_type == B_KEYBOARD ? "keyboard" : "mouse"));
ystr("symbol"); ystr("symbol");
if (bind->symbol == NULL)
y(null);
else
ystr(bind->symbol); ystr(bind->symbol);
ystr("command"); ystr("command");