diff options
Diffstat (limited to 'libraries/libstrophe/use-void-to-store-func-ptr.patch')
-rw-r--r-- | libraries/libstrophe/use-void-to-store-func-ptr.patch | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/libraries/libstrophe/use-void-to-store-func-ptr.patch b/libraries/libstrophe/use-void-to-store-func-ptr.patch new file mode 100644 index 0000000000..3c3a46e9ea --- /dev/null +++ b/libraries/libstrophe/use-void-to-store-func-ptr.patch @@ -0,0 +1,53 @@ +From dfb3e868248d86fc0f5553dffbb6f7c367c3c383 Mon Sep 17 00:00:00 2001 +From: Steffen Jaeckel <s@jaeckel.eu> +Date: Wed, 26 Mar 2025 14:14:19 +0100 +Subject: [PATCH] Use `void*` to store function pointer when compiled as C23. + +[0] decided that `rettype (*foo)();` must now be interpreted as +`rettype (*foo)(void);`. Luckily it also allows now to store function +pointers in a `void*` (c.f. Ch. J.5.7). + +[0]: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.pdf + +Signed-off-by: Steffen Jaeckel <s@jaeckel.eu> +--- + src/common.h | 7 ++++++- + src/handler.c | 2 -- + 2 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/src/common.h b/src/common.h +index 75134bea..c387c0fe 100644 +--- a/src/common.h ++++ b/src/common.h +@@ -30,12 +30,17 @@ + #include "snprintf.h" + + /** handlers **/ ++#if (__STDC_VERSION__ >= 202000L) ++typedef void* xmpp_void_handler; ++#else ++typedef int (*xmpp_void_handler)(); ++#endif + + typedef struct _xmpp_handlist_t xmpp_handlist_t; + struct _xmpp_handlist_t { + /* common members */ + int user_handler; +- int (*handler)(); ++ xmpp_void_handler handler; + void *userdata; + int enabled; /* handlers are added disabled and enabled after the + * handler chain is processed to prevent stanzas from +diff --git a/src/handler.c b/src/handler.c +index 1c9bf9f7..05772522 100644 +--- a/src/handler.c ++++ b/src/handler.c +@@ -25,8 +25,6 @@ + #include "common.h" + #include "ostypes.h" + +-typedef int (*xmpp_void_handler)(); +- + /* Remove item from the list pointed by head, but don't free it. + * There can be a situation when user's handler deletes another handler which + * is the previous in the list. handler_fire_stanza() and handler_fire_timed() |