Browse Source

*Dll_entry: Call SysInitMultiThreading to allocate TlsKey if not yet done

git-svn-id: trunk@17892 -
pierre 14 years ago
parent
commit
128e2e9cc5
1 changed files with 5 additions and 3 deletions
  1. 5 3
      rtl/win/syswin.inc

+ 5 - 3
rtl/win/syswin.inc

@@ -52,6 +52,8 @@ function Dll_entry{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}(const info : TEntry
          begin
          begin
            if Win32GetCurrentThreadId <> MainThreadIdWin32 then
            if Win32GetCurrentThreadId <> MainThreadIdWin32 then
            begin
            begin
+             { Initialize multithreading if not done }
+             SysInitMultithreading;
              { Allocate Threadvars  }
              { Allocate Threadvars  }
              SysAllocateThreadVars;
              SysAllocateThreadVars;
 
 
@@ -76,8 +78,8 @@ function Dll_entry{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}(const info : TEntry
        DLL_PROCESS_DETACH :
        DLL_PROCESS_DETACH :
          begin
          begin
            Dll_entry:=true; { return value is ignored }
            Dll_entry:=true; { return value is ignored }
-		   if MainThreadIDWin32=0 then // already been here.
-		     exit;
+	   if MainThreadIDWin32=0 then // already been here.
+	     exit;
            If SetJmp(DLLBuf) = 0 then
            If SetJmp(DLLBuf) = 0 then
              FPC_Do_Exit;
              FPC_Do_Exit;
            if assigned(Dll_Process_Detach_Hook) then
            if assigned(Dll_Process_Detach_Hook) then
@@ -86,7 +88,7 @@ function Dll_entry{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}(const info : TEntry
            DoneThread;
            DoneThread;
            { Free TLS resources used by ThreadVars }
            { Free TLS resources used by ThreadVars }
            SysFiniMultiThreading;
            SysFiniMultiThreading;
-		   MainThreadIDWin32:=0;
+           MainThreadIDWin32:=0;
          end;
          end;
      end;
      end;
   end;
   end;