From: Christophe CURIS <christophe.cu...@free.fr> A type conversion applied to a function when used as a pointer is dangerous because the compiler may not be able to make sure arguments will be compatible across architectures, so it can crash the application.
This is replaced by a function prototype matching exactly what is expected for the callback, and have the type conversion on the argument done inside the function so the compiler have complete liberty to generate any code needed to handle it safely. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> --- src/menu.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/menu.c b/src/menu.c index d23f3b3..e573b39 100644 --- a/src/menu.c +++ b/src/menu.c @@ -1543,8 +1543,10 @@ typedef struct _delay { int ox, oy; } _delay; -static void leaving(_delay * dl) +static void callback_leaving(void *user_param) { + _delay *dl = (_delay *) user_param; + wMenuMove(dl->menu, dl->ox, dl->oy, True); dl->menu->jump_back = NULL; dl->menu->menu->screen_ptr->flags.jump_back_pending = 0; @@ -1652,6 +1654,7 @@ void wMenuScroll(WMenu *menu) if (jump_back) { _delay *delayer; + if (!omenu->jump_back) { delayer = wmalloc(sizeof(_delay)); delayer->menu = omenu; @@ -1661,7 +1664,7 @@ void wMenuScroll(WMenu *menu) scr->flags.jump_back_pending = 1; } else delayer = omenu->jump_back; - WMAddTimerHandler(MENU_JUMP_BACK_DELAY, (WMCallback *) leaving, delayer); + WMAddTimerHandler(MENU_JUMP_BACK_DELAY, callback_leaving, delayer); } } -- 2.1.1 -- To unsubscribe, send mail to wmaker-dev-unsubscr...@lists.windowmaker.org.