From 07ed6d6f9275eb027e3d28d5d6a757687b49e719 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 10 May 2017 12:50:21 +1000 Subject: [PATCH] Ensure enums are size int MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Because otherwise things go boom, but unless you passed -fshort-enums this shouldn't happen anyway. And gcc's documentation says don't do that. So don't do that, or we'll scream at you. Signed-off-by: Peter Hutterer Reviewed-by: Armin Krezović Tested-by: Armin Krezović Reviewed-by: Eric Engestrom --- src/libinput.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/libinput.c b/src/libinput.c index 23255b07..f221b6a0 100644 --- a/src/libinput.c +++ b/src/libinput.c @@ -43,6 +43,37 @@ if (!check_event_type(li_, __func__, type_, __VA_ARGS__, -1)) \ return retval_; \ +#define ASSERT_INT_SIZE(type_) \ + static_assert(sizeof(type_) == sizeof(unsigned int), \ + "sizeof(" #type_ ") must be sizeof(uint)") + +ASSERT_INT_SIZE(enum libinput_log_priority); +ASSERT_INT_SIZE(enum libinput_device_capability); +ASSERT_INT_SIZE(enum libinput_key_state); +ASSERT_INT_SIZE(enum libinput_led); +ASSERT_INT_SIZE(enum libinput_button_state); +ASSERT_INT_SIZE(enum libinput_pointer_axis); +ASSERT_INT_SIZE(enum libinput_pointer_axis_source); +ASSERT_INT_SIZE(enum libinput_tablet_pad_ring_axis_source); +ASSERT_INT_SIZE(enum libinput_tablet_pad_strip_axis_source); +ASSERT_INT_SIZE(enum libinput_tablet_tool_type); +ASSERT_INT_SIZE(enum libinput_tablet_tool_proximity_state); +ASSERT_INT_SIZE(enum libinput_tablet_tool_tip_state); +ASSERT_INT_SIZE(enum libinput_switch_state); +ASSERT_INT_SIZE(enum libinput_switch); +ASSERT_INT_SIZE(enum libinput_event_type); +ASSERT_INT_SIZE(enum libinput_config_status); +ASSERT_INT_SIZE(enum libinput_config_tap_state); +ASSERT_INT_SIZE(enum libinput_config_tap_button_map); +ASSERT_INT_SIZE(enum libinput_config_drag_state); +ASSERT_INT_SIZE(enum libinput_config_drag_lock_state); +ASSERT_INT_SIZE(enum libinput_config_send_events_mode); +ASSERT_INT_SIZE(enum libinput_config_accel_profile); +ASSERT_INT_SIZE(enum libinput_config_click_method); +ASSERT_INT_SIZE(enum libinput_config_middle_emulation_state); +ASSERT_INT_SIZE(enum libinput_config_scroll_method); +ASSERT_INT_SIZE(enum libinput_config_dwt_state); + static inline bool check_event_type(struct libinput *libinput, const char *function_name,