Dirk Niggemann : krnl386.exe: Make CallProcEx32W16 clear CPEX_DEST_CDECL flag before looping over arguments.
Module: wine Branch: stable Commit: c7befdbcc764b61ebb469849c10d690d9cb24971 URL: https://source.winehq.org/git/wine.git/?a=commit;h=c7befdbcc764b61ebb469849c... Author: Dirk Niggemann <dirk.niggemann(a)gmail.com> Date: Tue Feb 4 22:42:50 2020 +0000 krnl386.exe: Make CallProcEx32W16 clear CPEX_DEST_CDECL flag before looping over arguments. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48480 Signed-off-by: Dirk Niggemann <dirk.niggemann(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> (cherry picked from commit c57483ba4d77d04a7af120a6e016b53c5596fe81) Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> --- dlls/krnl386.exe16/thunk.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/dlls/krnl386.exe16/thunk.c b/dlls/krnl386.exe16/thunk.c index c8ad3824c0..91a24f19c4 100644 --- a/dlls/krnl386.exe16/thunk.c +++ b/dlls/krnl386.exe16/thunk.c @@ -2475,11 +2475,12 @@ DWORD WINAPIV CallProc32W16( DWORD nrofargs, DWORD argconvmask, FARPROC proc32, DWORD WINAPIV CallProcEx32W16( DWORD nrofargs, DWORD argconvmask, FARPROC proc32, VA_LIST16 valist ) { DWORD args[32]; - unsigned int i; + unsigned int i, count = min( 32, nrofargs & ~CPEX_DEST_CDECL ); - TRACE("(%d,%d,%p args[",nrofargs,argconvmask,proc32); + TRACE("(%s,%d,%d,%p args[", nrofargs & CPEX_DEST_CDECL ? "cdecl": "stdcall", + nrofargs & ~CPEX_DEST_CDECL, argconvmask, proc32); - for (i=0;i<nrofargs;i++) + for (i = 0; i < count; i++) { if (argconvmask & (1<<i)) {
participants (1)
-
Alexandre Julliard