summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2013-08-23 10:25:08 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2013-08-29 11:36:20 +1000
commitce7e2f15162f4a47766f97275dcce8fc1bff72e9 (patch)
treefaa5c5af83d987487637cd6f581af432627ecc73
parentfa4cadae60e41923e81107e06fb1814edace36bd (diff)
Rewrite libevdev_is_event_code to avoid signed/unsigned comparison
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--libevdev/libevdev.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/libevdev/libevdev.c b/libevdev/libevdev.c
index fbfd8f0..61795f6 100644
--- a/libevdev/libevdev.c
+++ b/libevdev/libevdev.c
@@ -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*