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.

Reply via email to