X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Flib%2Fpseh%2Fi386%2Fpseh3.c;h=8a3be57e03f4e3d1b847e47b5072eee23c16258e;hp=9f2041528aa8c95716a77eb1b58ec2b394e06f5e;hb=71050e2752ffa0f09fee88fa3a758a8443b3ac7a;hpb=04e015a09834c1d6df33a9ba474595a68be4b4ba diff --git a/reactos/lib/pseh/i386/pseh3.c b/reactos/lib/pseh/i386/pseh3.c index 9f2041528aa..8a3be57e03f 100644 --- a/reactos/lib/pseh/i386/pseh3.c +++ b/reactos/lib/pseh/i386/pseh3.c @@ -197,8 +197,8 @@ _SEH3$_JumpToTarget( { asm volatile ( /* Load the registers */ - "movl 20(%%ecx), %%esp\n\t" - "movl 24(%%ecx), %%ebp\n\t" + "movl 24(%%ecx), %%esp\n\t" + "movl 28(%%ecx), %%ebp\n\t" /* Stack pointer is 4 off from the call to __SEH3$_RegisterFrame */ "addl $4, %%esp\n\t" @@ -215,8 +215,8 @@ _SEH3$_JumpToTarget( { asm volatile ( /* Load the registers */ - "movl 20(%%ecx), %%esp\n\t" - "movl 24(%%ecx), %%ebp\n\t" + "movl 24(%%ecx), %%esp\n\t" + "movl 28(%%ecx), %%ebp\n\t" /* Stack pointer is 4 off from the call to __SEH3$_RegisterFrame */ "addl $4, %%esp\n\t" @@ -274,8 +274,9 @@ _SEH3$_except_handler( /* Check if we have an exception handler */ if (CurrentFrame->ScopeTable->Target != NULL) { - /* Set exception pointers for this frame */ + /* Set exception pointers and code for this frame */ CurrentFrame->ExceptionPointers = &ExceptionPointers; + CurrentFrame->ExceptionCode = ExceptionRecord->ExceptionCode; /* Get the filter result */ FilterResult = _SEH3$_GetFilterResult(CurrentFrame); @@ -316,8 +317,9 @@ _SEH3$_except_handler( /* Check if this is an unwind frame */ if (CurrentFrame->ScopeTable->Target == NULL) { - /* Set exception pointers for this frame */ + /* Set exception pointers and code for this frame */ CurrentFrame->ExceptionPointers = &ExceptionPointers; + CurrentFrame->ExceptionCode = ExceptionRecord->ExceptionCode; /* Call the finally function */ _SEH3$_CallFinally(CurrentFrame);