mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-08 15:28:00 +02:00
Support Windows XP where SetThreadStackGuarantee is absent.
This commit is contained in:
parent
a2f2af87d2
commit
a774075f2f
@ -273,8 +273,8 @@ type
|
||||
function GetModuleHandle(p : PAnsiChar) : THandle;
|
||||
stdcall;external KernelDLL name 'GetModuleHandleA';
|
||||
|
||||
function SetThreadStackGuarantee(StackSizeInBytes : PPtrUint) : BOOL;
|
||||
stdcall;external KernelDLL name 'SetThreadStackGuarantee';
|
||||
var
|
||||
SetThreadStackGuarantee: function(StackSizeInBytes : PPtrUint) : BOOL; stdcall;
|
||||
{$else WINCE}
|
||||
|
||||
{ module functions }
|
||||
@ -304,7 +304,7 @@ type
|
||||
procedure GetSystemInfo(lpSystemInfo: PSystemInfo); {$ifdef wince}cdecl{$else}stdcall{$endif};external KernelDLL name 'GetSystemInfo';
|
||||
|
||||
function WinLoadLibraryW(lpLibFileName:pwidechar):THandle; {$ifdef wince}cdecl{$else}stdcall{$endif}; external KernelDLL name 'LoadLibraryW';
|
||||
function WinLoadLibraryA(lpLibFileName:pwidechar):THandle; {$ifdef wince}cdecl{$else}stdcall{$endif}; external KernelDLL name 'LoadLibraryA';
|
||||
function WinGetModuleHandleW(lpModuleName:pwidechar):THandle; {$ifdef wince}cdecl{$else}stdcall{$endif}; external KernelDLL name 'GetModuleHandleW';
|
||||
{$ifdef wince}
|
||||
function WinGetProcAddress(hModule:THandle; lpProcName:PAnsiChar):pointer; {$ifdef wince}cdecl{$else}stdcall{$endif}; external KernelDLL name 'GetProcAddressA';
|
||||
{$else}
|
||||
|
@ -229,8 +229,9 @@ var
|
||||
if ThreadID=TThreadID(0) then
|
||||
begin
|
||||
InitThread(ti.stklen);
|
||||
{$ifndef wince}
|
||||
SetThreadStackGuarantee(@StackMargin);
|
||||
{$ifndef wince}
|
||||
if Assigned(SetThreadStackGuarantee) then
|
||||
SetThreadStackGuarantee(@StackMargin);
|
||||
{$endif wince}
|
||||
end;
|
||||
|
||||
|
@ -619,7 +619,9 @@ initialization
|
||||
{ pass dummy value }
|
||||
StackLength := CheckInitialStkLen($1000000);
|
||||
StackBottom := StackTop - StackLength;
|
||||
SetThreadStackGuarantee(@StackMargin);
|
||||
CodePointer(SetThreadStackGuarantee) := WinGetProcAddress(WinGetModuleHandleW(KernelDLL), 'SetThreadStackGuarantee');
|
||||
if Assigned(SetThreadStackGuarantee) then
|
||||
SetThreadStackGuarantee(@StackMargin);
|
||||
|
||||
cmdshow:=startupinfo.wshowwindow;
|
||||
{ Setup heap and threading, these may be already initialized from TLS callback }
|
||||
|
@ -478,7 +478,9 @@ initialization
|
||||
{ pass dummy value }
|
||||
StackLength := CheckInitialStkLen($1000000);
|
||||
StackBottom := StackTop - StackLength;
|
||||
SetThreadStackGuarantee(@StackMargin);
|
||||
CodePointer(SetThreadStackGuarantee) := WinGetProcAddress(WinGetModuleHandleW(KernelDLL), 'SetThreadStackGuarantee');
|
||||
if Assigned(SetThreadStackGuarantee) then
|
||||
SetThreadStackGuarantee(@StackMargin);
|
||||
|
||||
{ get some helpful informations }
|
||||
GetStartupInfo(@startupinfo);
|
||||
|
Loading…
Reference in New Issue
Block a user