mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 02:59:33 +02:00
* Fix bug #32314 (SafeLoadLibrary does nothing on other platforms than windows)
git-svn-id: trunk@37049 -
This commit is contained in:
parent
0117568c25
commit
b6700f68b8
@ -702,44 +702,25 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function SafeLoadLibrary(const FileName: AnsiString;
|
function SafeLoadLibrary(const FileName: AnsiString; ErrorMode: DWord = {$ifdef windows}SEM_NOOPENFILEERRORBOX{$else windows}0{$endif windows}): HMODULE;
|
||||||
ErrorMode: DWord = {$ifdef windows}SEM_NOOPENFILEERRORBOX{$else windows}0{$endif windows}): HMODULE;
|
|
||||||
{$if defined(cpui386) or defined(cpux86_64)}
|
|
||||||
var
|
|
||||||
mode : DWord;
|
|
||||||
fpucw : Word;
|
|
||||||
ssecw : DWord;
|
|
||||||
{$endif}
|
|
||||||
begin
|
|
||||||
{$if defined(win64) or defined(win32)}
|
{$if defined(win64) or defined(win32)}
|
||||||
|
var
|
||||||
|
mode : DWord;
|
||||||
|
|
||||||
|
begin
|
||||||
mode:=SetErrorMode(ErrorMode);
|
mode:=SetErrorMode(ErrorMode);
|
||||||
{$endif}
|
|
||||||
try
|
try
|
||||||
{$if defined(cpui386) or defined(cpux86_64)}
|
System.SafeLoadLibrary(FileName);
|
||||||
fpucw:=Get8087CW;
|
finally
|
||||||
{$ifdef cpui386}
|
|
||||||
if has_sse_support then
|
|
||||||
{$endif cpui386}
|
|
||||||
ssecw:=GetMXCSR;
|
|
||||||
{$endif}
|
|
||||||
{$if defined(windows) or defined(win32)}
|
|
||||||
Result:=LoadLibraryA(PChar(Filename));
|
|
||||||
{$else}
|
|
||||||
Result:=0;
|
|
||||||
{$endif}
|
|
||||||
finally
|
|
||||||
{$if defined(cpui386) or defined(cpux86_64)}
|
|
||||||
Set8087CW(fpucw);
|
|
||||||
{$ifdef cpui386}
|
|
||||||
if has_sse_support then
|
|
||||||
{$endif cpui386}
|
|
||||||
SetMXCSR(ssecw);
|
|
||||||
{$endif}
|
|
||||||
{$if defined(win64) or defined(win32)}
|
|
||||||
SetErrorMode(mode);
|
SetErrorMode(mode);
|
||||||
{$endif}
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
{$else}
|
||||||
|
begin
|
||||||
|
System.SafeLoadLibrary(FileName);
|
||||||
|
end;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
function GetModuleName(Module: HMODULE): string;
|
function GetModuleName(Module: HMODULE): string;
|
||||||
{$ifdef MSWINDOWS}
|
{$ifdef MSWINDOWS}
|
||||||
|
Loading…
Reference in New Issue
Block a user