Ignore:
Timestamp:
Aug 22, 1999, 1:11:11 PM (26 years ago)
Author:
sandervl
Message:

Exception handler changes

File:
1 edited

Legend:

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

    r286 r617  
    1 /* $Id: wintls.cpp,v 1.3 1999-07-09 15:58:54 sandervl Exp $ */
     1/* $Id: wintls.cpp,v 1.4 1999-08-22 11:11:11 sandervl Exp $ */
    22/*
    33 * Win32 TLS API functions
     
    1313#include <thread.h>
    1414#include <wprocess.h>
     15#include <except.h>
     16#include "exceptutil.h"
    1517
    1618//******************************************************************************
     
    4951void Win32Image::tlsAttachThread()      //setup TLS structures for new thread
    5052{
     53 EXCEPTION_FRAME exceptFrame;
    5154 PIMAGE_TLS_CALLBACK *pCallback;
    52  TEB  *winteb;
    53  char *tibmem;
     55 USHORT sel;
     56 TEB   *winteb;
     57 char  *tibmem;
    5458
    5559   if(!tlsAddress)
     
    8690        while(*pCallback) {
    8791                dprintf(("tlsAttachThread: calling TLS Callback %x", *pCallback));
     92
     93                OS2SetExceptionHandler((void *)&exceptFrame);   
     94                sel = SetWin32TIB();
    8895                (*pCallback)((LPVOID)hinstance, DLL_THREAD_ATTACH, 0);
     96                SetFS(sel);
     97                OS2UnsetExceptionHandler((void *)&exceptFrame);
     98
    8999                dprintf(("tlsAttachThread: finished calling TLS Callback %x", *pCallback));
    90100                *pCallback++;
     
    97107void Win32Image::tlsDetachThread()      //destroy TLS structures
    98108{
     109 EXCEPTION_FRAME exceptFrame;
    99110 PIMAGE_TLS_CALLBACK *pCallback;
    100  TEB  *winteb;
     111 USHORT sel;
     112 TEB   *winteb;
    101113
    102114   if(!tlsAddress)
     
    109121        while(*pCallback) {
    110122                dprintf(("tlsDetachThread: calling TLS Callback %x", *pCallback));
     123
     124                OS2SetExceptionHandler((void *)&exceptFrame);   
     125                sel = SetWin32TIB();
    111126                (*pCallback)((LPVOID)hinstance, DLL_THREAD_DETACH, 0);
     127                SetFS(sel);
     128                OS2UnsetExceptionHandler((void *)&exceptFrame);
     129
    112130                dprintf(("tlsDetachThread: finished calling TLS Callback %x", *pCallback));
    113131                *pCallback++;
Note: See TracChangeset for help on using the changeset viewer.