fixed LRS reading/writing of extended on 64bit processors from Andrew Haines

git-svn-id: trunk@8261 -
This commit is contained in:
mattias 2005-12-06 18:47:11 +00:00
parent 29fded294e
commit 22c1e9cb16

View File

@ -2323,11 +2323,15 @@ end;
function ReadLRSExtended(s: TStream): Extended; function ReadLRSExtended(s: TStream): Extended;
begin begin
Result:=0; Result:=0;
{$IFDEF CPUi386} {$IFDEF FPC_HAS_TYPE_EXTENDED}
s.Read(Result,10); s.Read(Result,10);
{$ENDIF} {$IFDEF Endian_BIG}
{$IFDEF CPUPowerPC} ReverseBytes(@Result,10);
Result:=ReadLRSEndianLittleExtendedAsDouble(s); {$ENDIF}
{$ELSE}
{$IFDEF CPUPowerPC}
Result:=ReadLRSEndianLittleExtendedAsDouble(s);
{$ENDIF}
{$ENDIF} {$ENDIF}
end; end;
@ -2506,18 +2510,23 @@ end;
procedure WriteLRSExtended(s: TStream; const e: extended); procedure WriteLRSExtended(s: TStream; const e: extended);
begin begin
{$IFDEF CPUi386} {$IFDEF FPC_HAS_TYPE_EXTENDED}
s.Write(e,10); {$IFDEF ENDIAN_BIG}
{$ENDIF} WriteLRS10BytesReversed(s, @e);
{$IFDEF CPUPowerPC} {$ELSE ENDIAN_LITTLE}
if SizeOf(e)=10 then s.Write(e,10);
WriteLRS10BytesReversed(s,@e) {$ENDIF}
else if SizeOf(e)=8 then {$ELSE}
WriteLRSEndianBigDoubleAsEndianLittleExtended(s,@e) {$IFDEF CPUPowerPC}
else begin if SizeOf(e)=10 then
debugln('WARNING: WriteLRSExtended not implemented yet for PowerPC'); WriteLRS10BytesReversed(s,@e)
WriteLRSNull(s,10); else if SizeOf(e)=8 then
end; WriteLRSEndianBigDoubleAsEndianLittleExtended(s,@e)
else begin
debugln('WARNING: WriteLRSExtended not implemented yet for PowerPC');
WriteLRSNull(s,10);
end;
{$ENDIF}
{$ENDIF} {$ENDIF}
end; end;