From e2e6e9fd8581b779d2accba4e054fa652a13df9e Mon Sep 17 00:00:00 2001 From: akallabeth Date: Tue, 4 Mar 2025 09:44:07 +0100 Subject: [PATCH] [freerdp,api] GCC/clang optimized IFCALLRESULT Use statement expressions to add a log message for unset function pointers --- include/freerdp/api.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/include/freerdp/api.h b/include/freerdp/api.h index b7655cf20..07003bc40 100644 --- a/include/freerdp/api.h +++ b/include/freerdp/api.h @@ -90,13 +90,14 @@ WLog_VRB("com.freerdp.api", "IFCALLRET(" #_cb ") == NULL"); \ } while (0) -#if 0 // defined(__GNUC__) +#if defined(__GNUC__) || defined(__clang__) #define IFCALLRESULT(_default_return, _cb, ...) \ - ({ \ - (_cb != NULL) ? _cb(__VA_ARGS__) : ({ \ + __extension__({ \ + if (_cb == NULL) \ + { \ WLog_VRB("com.freerdp.api", "IFCALLRESULT(" #_cb ") == NULL"); \ - (_default_return); \ - }); \ + } \ + ((_cb != NULL) ? _cb(__VA_ARGS__) : (_default_return)); \ }) #else #define IFCALLRESULT(_default_return, _cb, ...) \