Alexandre Julliard : msvcrt: Correctly walk up the list of trylevels in except_handler3.
Alexandre Julliard
julliard at winehq.org
Wed Jan 7 10:57:15 CST 2009
Module: wine
Branch: master
Commit: d751c2e5c15b97b30a945841040c34f451983317
URL: http://source.winehq.org/git/wine.git/?a=commit;h=d751c2e5c15b97b30a945841040c34f451983317
Author: Alexandre Julliard <julliard at winehq.org>
Date: Wed Jan 7 14:17:26 2009 +0100
msvcrt: Correctly walk up the list of trylevels in except_handler3.
---
dlls/msvcrt/except.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/dlls/msvcrt/except.c b/dlls/msvcrt/except.c
index 6a6fed3..7c4ee47 100644
--- a/dlls/msvcrt/except.c
+++ b/dlls/msvcrt/except.c
@@ -219,10 +219,10 @@ int CDECL _except_handler3(PEXCEPTION_RECORD rec,
while (trylevel != TRYLEVEL_END)
{
+ TRACE( "level %d prev %d filter %p\n", trylevel, pScopeTable[trylevel].previousTryLevel,
+ pScopeTable[trylevel].lpfnFilter );
if (pScopeTable[trylevel].lpfnFilter)
{
- TRACE("filter = %p\n", pScopeTable[trylevel].lpfnFilter);
-
retval = call_filter( pScopeTable[trylevel].lpfnFilter, &exceptPtrs, &frame->_ebp );
TRACE("filter returned %s\n", retval == EXCEPTION_CONTINUE_EXECUTION ?
@@ -241,13 +241,13 @@ int CDECL _except_handler3(PEXCEPTION_RECORD rec,
/* Set our trylevel to the enclosing block, and call the __finally
* code, which won't return
*/
- frame->trylevel = pScopeTable->previousTryLevel;
+ frame->trylevel = pScopeTable[trylevel].previousTryLevel;
TRACE("__finally block %p\n",pScopeTable[trylevel].lpfnHandler);
call_finally_block(pScopeTable[trylevel].lpfnHandler, &frame->_ebp);
ERR("Returned from __finally block - expect crash!\n");
}
}
- trylevel = pScopeTable->previousTryLevel;
+ trylevel = pScopeTable[trylevel].previousTryLevel;
}
}
#else
More information about the wine-cvs
mailing list