From ef5c0e78ab82409ce684ec9eafead19e654f3d68 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Mon, 31 Jul 2023 16:49:24 +0200 Subject: [PATCH] [build] use define WINPR_FALLTHROUGH with c17 compatible compilers annotate with [[fallthrough]] --- channels/urbdrc/client/libusb/libusb_udevice.c | 2 ++ client/X11/xf_input.c | 5 +++++ libfreerdp/core/credssp_auth.c | 1 + libfreerdp/core/gateway/rpc_client.c | 1 + winpr/include/config/wtypes.h.in | 6 ++++++ winpr/libwinpr/ncrypt/ncrypt_pkcs11.c | 2 ++ winpr/libwinpr/sspi/Kerberos/kerberos.c | 1 + 7 files changed, 18 insertions(+) diff --git a/channels/urbdrc/client/libusb/libusb_udevice.c b/channels/urbdrc/client/libusb/libusb_udevice.c index cf80bce33..9f7bc1886 100644 --- a/channels/urbdrc/client/libusb/libusb_udevice.c +++ b/channels/urbdrc/client/libusb/libusb_udevice.c @@ -288,7 +288,9 @@ static void LIBUSB_CALL func_iso_callback(struct libusb_transfer* transfer) /* fallthrough */ case LIBUSB_TRANSFER_CANCELLED: + WINPR_FALLTHROUGH case LIBUSB_TRANSFER_TIMED_OUT: + WINPR_FALLTHROUGH case LIBUSB_TRANSFER_ERROR: { const UINT32 InterfaceId = diff --git a/client/X11/xf_input.c b/client/X11/xf_input.c index e2520edf0..827c7b7a8 100644 --- a/client/X11/xf_input.c +++ b/client/X11/xf_input.c @@ -855,12 +855,16 @@ static int xf_input_handle_event_remote(xfContext* xfc, const XEvent* event) { case XI_TouchBegin: xf_input_pens_unhover(xfc); + WINPR_FALLTHROUGH case XI_TouchUpdate: + WINPR_FALLTHROUGH case XI_TouchEnd: xf_input_touch_remote(xfc, cookie.cc->data, cookie.cc->evtype); break; case XI_ButtonPress: + WINPR_FALLTHROUGH case XI_Motion: + WINPR_FALLTHROUGH case XI_ButtonRelease: { WLog_DBG(TAG, "checking for pen"); @@ -873,6 +877,7 @@ static int xf_input_handle_event_remote(xfContext* xfc, const XEvent* event) break; } } + WINPR_FALLTHROUGH default: xf_input_pens_unhover(xfc); xf_input_event(xfc, event, cookie.cc->data, cookie.cc->evtype); diff --git a/libfreerdp/core/credssp_auth.c b/libfreerdp/core/credssp_auth.c index 59838ba0e..47e80b08e 100644 --- a/libfreerdp/core/credssp_auth.c +++ b/libfreerdp/core/credssp_auth.c @@ -707,6 +707,7 @@ void credssp_auth_free(rdpCredsspAuth* auth) WINPR_ASSERT(auth->table->DeleteSecurityContext); auth->table->DeleteSecurityContext(&auth->context); /* FALLTHROUGH */ + WINPR_FALLTHROUGH case AUTH_STATE_CREDS: WINPR_ASSERT(auth->table->FreeCredentialsHandle); auth->table->FreeCredentialsHandle(&auth->credentials); diff --git a/libfreerdp/core/gateway/rpc_client.c b/libfreerdp/core/gateway/rpc_client.c index d499ed2e5..abee07832 100644 --- a/libfreerdp/core/gateway/rpc_client.c +++ b/libfreerdp/core/gateway/rpc_client.c @@ -287,6 +287,7 @@ static int rpc_client_recv_pdu(rdpRpc* rpc, RPC_PDU* pdu) return -1; } /* FALLTHROUGH */ + WINPR_FALLTHROUGH case RPC_BIND_STATE_COMPLETE: rpc_client_transition_to_state(rpc, RPC_CLIENT_STATE_CONTEXT_NEGOTIATED); diff --git a/winpr/include/config/wtypes.h.in b/winpr/include/config/wtypes.h.in index 2158e53c5..86dc08416 100644 --- a/winpr/include/config/wtypes.h.in +++ b/winpr/include/config/wtypes.h.in @@ -20,6 +20,12 @@ #ifndef WINPR_WTYPES_H #define WINPR_WTYPES_H +#if defined(__STDC__) && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201710L) +#define WINPR_FALLTHROUGH [[fallthrough]] +#else +#define WINPR_FALLTHROUGH +#endif + /* Set by CMake during configuration */ #cmakedefine WINPR_HAVE_STDINT_H #cmakedefine WINPR_HAVE_STDBOOL_H diff --git a/winpr/libwinpr/ncrypt/ncrypt_pkcs11.c b/winpr/libwinpr/ncrypt/ncrypt_pkcs11.c index ca7fd1250..f912b27de 100644 --- a/winpr/libwinpr/ncrypt/ncrypt_pkcs11.c +++ b/winpr/libwinpr/ncrypt/ncrypt_pkcs11.c @@ -207,6 +207,8 @@ static CK_RV object_load_attributes(NCryptP11ProviderHandle* provider, CK_SESSIO if (!attributes_have_unallocated_buffers(attributes, count)) return rv; /* fallthrough */ + WINPR_FALLTHROUGH + case CKR_ATTRIBUTE_SENSITIVE: case CKR_ATTRIBUTE_TYPE_INVALID: case CKR_BUFFER_TOO_SMALL: diff --git a/winpr/libwinpr/sspi/Kerberos/kerberos.c b/winpr/libwinpr/sspi/Kerberos/kerberos.c index d4407abab..cbd3ee676 100644 --- a/winpr/libwinpr/sspi/Kerberos/kerberos.c +++ b/winpr/libwinpr/sspi/Kerberos/kerberos.c @@ -818,6 +818,7 @@ static SECURITY_STATUS SEC_ENTRY kerberos_InitializeSecurityContextA( goto bad_token; /* Continue to AP-REQ */ + WINPR_FALLTHROUGH case KERBEROS_STATE_AP_REQ: