From 610686a9c31ee04adc170f2f13b5d2bb6432a118 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Mon, 24 May 2010 10:47:13 +0930 Subject: [PATCH] typesafe_cb: show flaw in typesafe_cb with undefined structs. --- .../test/compile_ok-typesafe_cb-undefined.c | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 ccan/typesafe_cb/test/compile_ok-typesafe_cb-undefined.c diff --git a/ccan/typesafe_cb/test/compile_ok-typesafe_cb-undefined.c b/ccan/typesafe_cb/test/compile_ok-typesafe_cb-undefined.c new file mode 100644 index 00000000..d4ae4ca3 --- /dev/null +++ b/ccan/typesafe_cb/test/compile_ok-typesafe_cb-undefined.c @@ -0,0 +1,49 @@ +#include +#include + +/* const args in callbacks should be OK. */ + +static void _register_callback(void (*cb)(void *arg), void *arg) +{ +} + +#define register_callback(cb, arg) \ + _register_callback(typesafe_cb(void, (cb), (arg)), (arg)) + +static void _register_callback_pre(void (*cb)(int x, void *arg), void *arg) +{ +} + +#define register_callback_pre(cb, arg) \ + _register_callback_pre(typesafe_cb_preargs(void, (cb), (arg), int), (arg)) + +static void _register_callback_post(void (*cb)(void *arg, int x), void *arg) +{ +} + +#define register_callback_post(cb, arg) \ + _register_callback_post(typesafe_cb_postargs(void, (cb), (arg), int), (arg)) + +struct undefined; + +static void my_callback(const struct undefined *undef) +{ +} + +static void my_callback_pre(int x, const struct undefined *undef) +{ +} + +static void my_callback_post(const struct undefined *undef, int x) +{ +} + +int main(int argc, char *argv[]) +{ + struct undefined *handle = NULL; + + register_callback(my_callback, handle); + register_callback_pre(my_callback_pre, handle); + register_callback_post(my_callback_post, handle); + return 0; +} -- 2.39.2