From e610c8c6380caa05094294e2fa6392ba5c3f4024 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Tue, 22 Mar 2011 11:50:08 +1030 Subject: [PATCH] opt: avoid function pointer arithmetic Same fix as we used for ccan/typesafe_cb. --- ccan/opt/opt.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ccan/opt/opt.h b/ccan/opt/opt.h index 539a0a66..9075ceed 100644 --- a/ccan/opt/opt.h +++ b/ccan/opt/opt.h @@ -315,7 +315,7 @@ struct opt_table { /* Resolves to the four parameters for non-arg callbacks. */ #define OPT_CB_NOARG(cb, arg) \ OPT_NOARG, \ - cast_if_any(char *(*)(void *), (cb), (cb)+0, \ + cast_if_any(char *(*)(void *), (cb), 0?(cb):(cb),\ char *(*)(typeof(*(arg))*), \ char *(*)(const typeof(*(arg))*), \ char *(*)(const void *)), \ @@ -324,11 +324,12 @@ struct opt_table { /* Resolves to the four parameters for arg callbacks. */ #define OPT_CB_ARG(cb, show, arg) \ OPT_HASARG, NULL, \ - cast_if_any(char *(*)(const char *,void *), (cb), (cb)+0, \ + cast_if_any(char *(*)(const char *,void *), (cb), 0?(cb):(cb), \ char *(*)(const char *, typeof(*(arg))*), \ char *(*)(const char *, const typeof(*(arg))*), \ char *(*)(const char *, const void *)), \ - cast_if_type(void (*)(char buf[], const void *), (show), (show)+0, \ + cast_if_type(void (*)(char buf[], const void *), (show), \ + 0?(show):(show), \ void (*)(char buf[], const typeof(*(arg))*)) /* Non-typesafe register function. */ -- 2.39.2