]> git.sur5r.net Git - i3/i3/commit
Fix key bindings on big-endian platforms 1504/head
authorSteven McDonald <steven@steven-mcdonald.id.au>
Sun, 1 Mar 2015 07:30:45 +0000 (18:30 +1100)
committerSteven McDonald <steven@steven-mcdonald.id.au>
Sun, 1 Mar 2015 10:07:03 +0000 (21:07 +1100)
commit1ab76fb05ad146987faeea83f5f04967c640a9d3
tree2e7dba4aec790e2de55141c5fbc38916f91921fd
parentcc55ee472d9c186a09fb8cfb75472a9202b6f711
Fix key bindings on big-endian platforms

input_code is a uint16_t, but xcb_keycode_t is uint8_t, meaning that
only the first byte of input_code is inspected by memmem. On
little-endian platforms, this code would have worked by accident, since
the first byte of input_code represents the 8 least significant bits.
However, on big-endian platforms the first byte is the 8 most
significant bits, which means memmem is scanning bind->translated_to
for the wrong keycode (probably 0).

In order to work correctly on big-endian and little-endian platforms,
simply typecast input_code to an xcb_keycode_t and pass that to memmem.

The observed behaviour associated with this bug is that key bindings
don't work at all. This patch has been tested on an iBook G4 running
OpenBSD -current, and key bindings work properly with this fix applied.
src/bindings.c