Changeset 21986 for trunk/src/kernel32/thread.cpp
- Timestamp:
- Mar 28, 2012, 5:49:37 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/thread.cpp
r21983 r21986 693 693 EXCEPTION_FRAME exceptFrame; 694 694 Win32Thread *me = (Win32Thread *)lpData; 695 ULONG dwFlags = me->dwFlags;696 695 ULONG threadCallback = (ULONG)me->pCallback; 697 LPVOID userdata = me->lpUserData;698 696 DWORD rc; 699 697 TEB *winteb = (TEB *)me->teb; 700 DWORD cbCommitStack = me->cbCommitStack;701 702 // @todo the approach to copy all fields to local vars and delete the703 // instance is dumb, fix it later704 delete(me); //only called once705 me = 0;706 698 707 699 if(InitializeThread(winteb) == FALSE) { 708 700 dprintf(("Win32ThreadProc: InitializeTIB failed!!")); 709 701 DebugInt3(); 702 delete me; 710 703 return 0; 711 704 } 712 705 dprintf(("Win32ThreadProc: Thread handle 0x%x, thread id %d", GetCurrentThread(), GetCurrentThreadId())); 713 706 714 winteb->flags = dwFlags;707 winteb->flags = me->dwFlags; 715 708 716 709 winteb->entry_point = (void *)threadCallback; 717 winteb->entry_arg = (void *) userdata;710 winteb->entry_arg = (void *)me->lpUserData; 718 711 719 712 winteb->o.odin.hab = OSLibWinInitialize(); … … 727 720 dprintf(("Stack top 0x%x, stack end 0x%x", winteb->stack_top, winteb->stack_low)); 728 721 729 if ( cbCommitStack) {722 if (me->cbCommitStack) { 730 723 // pre-commit part of the stack 731 724 dprintf(("Pre-commit 0x%x bytes of stack", me->cbCommitStack)); … … 773 766 //Set FPU control word to 0x27F (same as in NT) 774 767 CONTROL87(0x27F, 0xFFF); 775 rc = AsmCallThreadHandler(fAlignStack, threadCallback, userdata);768 rc = AsmCallThreadHandler(fAlignStack, threadCallback, me->lpUserData); 776 769 777 770 // make sure the Win32 exception stack (if there is still any) is unwound … … 793 786 } 794 787 788 delete me; 795 789 return rc; 796 790 }
Note:
See TracChangeset
for help on using the changeset viewer.