longjmp should restore the stack pointer as it would be *after* setjmp
returns. Since the PSEH implementation of setjmp is __stdcall, this
value differs from the usual esp+4, because *after* return *two*
doublewords are popped (return IP and parameter). Thanks to blight_ for
reporting
Modified: trunk/reactos/lib/pseh/i386/setjmp.asm
_____
Modified: trunk/reactos/lib/pseh/i386/setjmp.asm
--- trunk/reactos/lib/pseh/i386/setjmp.asm 2005-06-13 18:33:08 UTC
(rev 15893)
+++ trunk/reactos/lib/pseh/i386/setjmp.asm 2005-06-13 20:31:55 UTC
(rev 15894)
@@ -33,7 +33,7 @@
mov ecx, [esp+0]
; stack pointer
- lea edx, [esp+4]
+ lea edx, [esp+8]
; fill the jump buffer
mov [eax+0], ebp
Show replies by date