Parcourir la source

Fix to be able to allocate threadvars when non-rtl code creates a new thread

git-svn-id: trunk@5475 -
michael il y a 19 ans
Parent
commit
d4c30020ee
1 fichiers modifiés avec 14 ajouts et 4 suppressions
  1. 14 4
      rtl/win/systhrd.inc

+ 14 - 4
rtl/win/systhrd.inc

@@ -86,10 +86,6 @@ CONST
       end;
 
 
-    function SysRelocateThreadvar(offset : dword) : pointer;
-      begin
-        SysRelocateThreadvar:=TlsGetValue(tlskey)+Offset;
-      end;
 
 
     procedure SysAllocateThreadVars;
@@ -105,6 +101,20 @@ CONST
         TlsSetValue(tlskey,dataindex);
       end;
 
+    function SysRelocateThreadvar(offset : dword) : pointer;
+	var
+        dataindex : pointer;
+      begin
+        dataindex := TlsGetValue(tlskey);
+        if dataindex = nil then begin
+          SysAllocateThreadVars;
+          dataindex := TlsGetValue(tlskey);
+        end;
+        SysRelocateThreadvar:=DataIndex+Offset;
+{
+      begin
+        SysRelocateThreadvar:=TlsGetValue(tlskey)+Offset;
+}      end;
 
     procedure SysReleaseThreadVars;
       begin