{
int rc;
int i;
- unsigned long keystate[NLONGS(KEY_CNT)];
+ unsigned long keystate[NLONGS(KEY_CNT)] = {0};
rc = ioctl(dev->fd, EVIOCGKEY(sizeof(keystate)), keystate);
if (rc < 0)
struct input_event *ev = queue_push(dev);
init_event(dev, ev, EV_KEY, i, new ? 1 : 0);
}
- set_bit_state(dev->key_values, i, new);
}
+ memcpy(dev->key_values, keystate, rc);
+
rc = 0;
out:
return rc ? -errno : 0;
{
int rc;
int i;
- unsigned long swstate[NLONGS(SW_CNT)];
+ unsigned long swstate[NLONGS(SW_CNT)] = {0};
rc = ioctl(dev->fd, EVIOCGSW(sizeof(swstate)), swstate);
if (rc < 0)
struct input_event *ev = queue_push(dev);
init_event(dev, ev, EV_SW, i, new ? 1 : 0);
}
- set_bit_state(dev->sw_values, i, new);
}
+ memcpy(dev->sw_values, swstate, rc);
+
rc = 0;
out:
return rc ? -errno : 0;
{
int rc;
int i;
- unsigned long ledstate[NLONGS(LED_CNT)];
+ unsigned long ledstate[NLONGS(LED_CNT)] = {0};
rc = ioctl(dev->fd, EVIOCGLED(sizeof(ledstate)), ledstate);
if (rc < 0)
struct input_event *ev = queue_push(dev);
init_event(dev, ev, EV_LED, i, new ? 1 : 0);
}
- set_bit_state(dev->led_values, i, new);
}
+ memcpy(dev->led_values, ledstate, rc);
+
rc = 0;
out:
return rc ? -errno : 0;