mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-22 05:48:01 +01:00
wmaker: replaced dangerous function type conversion by argument conversion
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.curis@free.fr> Signed-off-by: Carlos R. Mafra <crmafra@gmail.com>
This commit is contained in:
committed by
Carlos R. Mafra
parent
f60f14b7bd
commit
894d3e89bf
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user