Ignore:
Timestamp:
Feb 14, 2001, 11:36:45 AM (25 years ago)
Author:
sandervl
Message:

TLS index allocation + RtlUnwind fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/exceptions.cpp

    r5037 r5128  
    1 /* $Id: exceptions.cpp,v 1.49 2001-01-29 01:22:21 bird Exp $ */
     1/* $Id: exceptions.cpp,v 1.50 2001-02-14 10:36:45 sandervl Exp $ */
    22
    33/* WARNING: Compiling this module with ICC with optimizations turned on   */
     
    256256
    257257/*******************************************************************
     258 *         EXC_UnwindHandler
     259 *
     260 * Handler for exceptions happening inside an unwind handler.
     261 */
     262static DWORD WIN32API EXC_UnwindHandler( WINEXCEPTION_RECORD *rec, WINEXCEPTION_FRAME *frame,
     263//                              WINCONTEXT *context, WINEXCEPTION_FRAME **dispatcher )
     264                                WINCONTEXT *context, LPVOID dispatcher )
     265{
     266    if (!(rec->ExceptionFlags & (EH_UNWINDING | EH_EXIT_UNWIND)))
     267        return ExceptionContinueSearch;
     268    /* We shouldn't get here so we store faulty frame in dispatcher */
     269    *(PWINEXCEPTION_FRAME*)dispatcher = ((EXC_NESTED_FRAME*)frame)->prevFrame;
     270    return ExceptionCollidedUnwind;
     271}
     272
     273/*******************************************************************
    258274 *         EXC_CallHandler
    259275 *
     
    461477        /* Call handler */
    462478        dprintf(("KERNEL32: RtlUnwind - calling exception handler %08X", frame->Handler));
    463         rc = frame->Handler(pRecord, frame, &context, &dispatch);
     479        rc = EXC_CallHandler(pRecord, frame, &context, &dispatch, frame->Handler, EXC_UnwindHandler );
    464480        dprintf(("KERNEL32: RtlUnwind - handler returned %#x", rc));
    465481        switch (rc)
Note: See TracChangeset for help on using the changeset viewer.