Buttons higher than sizeof(int) weren't getting sent. The mod_buttons macro
needs to test for the number of bits, not bytes.

Introduced in 880512f84c26cddbfc1a8ff495890595424466f2

Reported-by: Andrzej Giniewicz <[email protected]>
Signed-off-by: Peter Hutterer <[email protected]>
---
Just to show that having a test doesn't guarantee bug-free code. If the test
replicates the same error, it's still pointless. :)

 src/wcmUSB.c       |    2 +-
 test/wacom-tests.c |    4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/wcmUSB.c b/src/wcmUSB.c
index 9ff59ea..1219530 100644
--- a/src/wcmUSB.c
+++ b/src/wcmUSB.c
@@ -1054,7 +1054,7 @@ static int mod_buttons(int buttons, int btn, int state)
 {
        int mask;
 
-       if (btn >= sizeof(int))
+       if (btn >= sizeof(int) * 8)
        {
                xf86Msg(X_ERROR, "%s: Invalid button number %d. Insufficient "
                                "storage\n", __func__, btn);
diff --git a/test/wacom-tests.c b/test/wacom-tests.c
index 8e2d352..a22243e 100644
--- a/test/wacom-tests.c
+++ b/test/wacom-tests.c
@@ -432,7 +432,7 @@ static void
 test_mod_buttons(void)
 {
        int i;
-       for (i = 0; i < sizeof(int); i++)
+       for (i = 0; i < sizeof(int) * 8; i++)
        {
                int buttons = mod_buttons(0, i, 1);
                assert(buttons == (1 << i));
@@ -440,7 +440,7 @@ test_mod_buttons(void)
                assert(buttons == 0);
        }
 
-       assert(mod_buttons(0, sizeof(int), 1) == 0);
+       assert(mod_buttons(0, sizeof(int) * 8, 1) == 0);
 }
 
 static void test_set_type(void)
-- 
1.7.4.2


------------------------------------------------------------------------------
Xperia(TM) PLAY
It's a major breakthrough. An authentic gaming
smartphone on the nation's most reliable network.
And it wants your games.
http://p.sf.net/sfu/verizon-sfdev
_______________________________________________
Linuxwacom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to