From: JengHyun Kang Date: Wed, 7 Jun 2017 11:10:07 +0000 (+0900) Subject: evdev: free aux_data list when device is destroy X-Git-Tag: submit/tizen/20170613.100404~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=551ee2c7296c90d06445c0b5cb493cad59a6f253;p=platform%2Fupstream%2Flibinput.git evdev: free aux_data list when device is destroy Change-Id: I76f8df6b8fed1d01540c1430247ffc00dc28dfc5 --- diff --git a/src/evdev.c b/src/evdev.c index 2716b371..369149b8 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -2421,6 +2421,7 @@ evdev_device_destroy(struct evdev_device *device) libinput_seat_unref(device->base.seat); libevdev_free(device->evdev); udev_device_unref(device->udev_device); + evdev_device_free_aux_data(device); free(device->mt.slots); free(device); } @@ -2462,3 +2463,19 @@ failed: } } } + +void +evdev_device_free_aux_data(struct evdev_device *device) +{ + int i; + struct mt_aux_data *aux_data, *aux_data_tmp; + + for (i = 0; i < (int)device->mt.slots_len; i++) { + list_for_each_safe(aux_data, aux_data_tmp, &device->mt.aux_data_list[i], link) { + list_remove(&aux_data->link); + free(aux_data); + } + list_remove(&device->mt.aux_data_list[i]); + } + free(device->mt.aux_data_list); +} diff --git a/src/evdev.h b/src/evdev.h index 81c83b22..5f9cee3c 100644 --- a/src/evdev.h +++ b/src/evdev.h @@ -381,4 +381,7 @@ evdev_device_has_aux_data(struct evdev_device *device, uint32_t code); void evdev_device_set_aux_data(struct evdev_device *device, uint32_t code); + +void +evdev_device_free_aux_data(struct evdev_device *device); #endif /* EVDEV_H */