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