* SysAllocateThreadVars: Make sure the data slot is only allocated once

git-svn-id: trunk@17891 -
This commit is contained in:
pierre 2011-07-01 10:07:38 +00:00
parent 04d85d32d9
commit 1339c66ec9

View File

@ -113,15 +113,22 @@ var
procedure SysAllocateThreadVars;
var
dataindex : pointer;
errorsave : dword;
begin
{ we've to allocate the memory from system }
{ because the FPC heap management uses }
{ exceptions which use threadvars but }
{ these aren't allocated yet ... }
{ allocate room on the heap for the thread vars }
errorsave:=GetLastError;
dataindex:=TlsGetValue(tlskey);
if dataindex=nil then
begin
dataindex:=pointer(LocalAlloc(LMEM_FIXED or LMEM_ZEROINIT,threadvarblocksize));
TlsSetValue(tlskey,dataindex);
end;
SetLastError(errorsave);
end;
function SysRelocateThreadvar(offset : dword) : pointer; forward;