Rewrite libevdev_is_event_code to avoid signed/unsigned comparison
authorPeter Hutterer <peter.hutterer@who-t.net>
Fri, 23 Aug 2013 00:25:08 +0000 (10:25 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Thu, 29 Aug 2013 01:36:20 +0000 (11:36 +1000)
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
libevdev/libevdev.c

index fbfd8f071937270e6fa161a46ccd596ade2090e6..61795f6489f088dc4e80a4422a030580cfa3972a 100644 (file)
@@ -1172,10 +1172,13 @@ libevdev_is_event_type(const struct input_event *ev, unsigned int type)
 int
 libevdev_is_event_code(const struct input_event *ev, unsigned int type, unsigned int code)
 {
-       return type < EV_MAX &&
-               ev->type == type &&
-               (type == EV_SYN || code <= libevdev_get_event_type_max(type)) &&
-               ev->code == code;
+       int max;
+
+       if (!libevdev_is_event_type(ev, type))
+               return 0;
+
+       max = libevdev_get_event_type_max(type);
+       return (max > -1 && code <= (unsigned int)max && ev->code == code);
 }
 
 const char*