* Fix bug #32314 (SafeLoadLibrary does nothing on other platforms than windows)

git-svn-id: trunk@37049 -
This commit is contained in:
michael 2017-08-24 08:46:07 +00:00
parent 0117568c25
commit b6700f68b8

View File

@ -702,44 +702,25 @@ begin
end;
function SafeLoadLibrary(const FileName: AnsiString;
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
function SafeLoadLibrary(const FileName: AnsiString; ErrorMode: DWord = {$ifdef windows}SEM_NOOPENFILEERRORBOX{$else windows}0{$endif windows}): HMODULE;
{$if defined(win64) or defined(win32)}
var
mode : DWord;
begin
mode:=SetErrorMode(ErrorMode);
{$endif}
try
{$if defined(cpui386) or defined(cpux86_64)}
fpucw:=Get8087CW;
{$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)}
System.SafeLoadLibrary(FileName);
finally
SetErrorMode(mode);
{$endif}
end;
end;
end;
{$else}
begin
System.SafeLoadLibrary(FileName);
end;
{$endif}
function GetModuleName(Module: HMODULE): string;
{$ifdef MSWINDOWS}