Bugfix: [QF]T_Thunk should clear HIWORD(EAX) on return.

Bugfix: hack for stupid USER32 CallbackGlueLS routine in Common32ThkLS.
This commit is contained in:
Ulrich Weigand 1998-11-24 20:44:46 +00:00 committed by Alexandre Julliard
parent 077da06e93
commit a2fe8ebe3c
1 changed files with 6 additions and 0 deletions

View File

@ -263,6 +263,7 @@ REGS_ENTRYPOINT(QT_Thunk)
EAX_reg(context) = Callbacks->CallRegisterShortProc( &context16, argsize ); EAX_reg(context) = Callbacks->CallRegisterShortProc( &context16, argsize );
EDX_reg(context) = HIWORD(EAX_reg(context)); EDX_reg(context) = HIWORD(EAX_reg(context));
EAX_reg(context) = LOWORD(EAX_reg(context));
} }
@ -392,6 +393,7 @@ REGS_ENTRYPOINT(FT_Thunk)
EAX_reg(context) = Callbacks->CallRegisterShortProc( &context16, argsize ); EAX_reg(context) = Callbacks->CallRegisterShortProc( &context16, argsize );
EDX_reg(context) = HIWORD(EAX_reg(context)); EDX_reg(context) = HIWORD(EAX_reg(context));
EAX_reg(context) = LOWORD(EAX_reg(context));
} }
/********************************************************************** /**********************************************************************
@ -565,6 +567,10 @@ REGS_ENTRYPOINT(Common32ThkLS)
argsize = HIWORD(EDX_reg(context)) * 4; argsize = HIWORD(EDX_reg(context)) * 4;
/* FIXME: hack for stupid USER32 CallbackGlueLS routine */
if (EDX_reg(context) == EIP_reg(context))
argsize = 6 * 4;
memcpy( ((LPBYTE)THREAD_STACK16(thdb))-argsize, memcpy( ((LPBYTE)THREAD_STACK16(thdb))-argsize,
(LPBYTE)ESP_reg(context)+4, argsize ); (LPBYTE)ESP_reg(context)+4, argsize );