diff options
author | svenbarth <svenbarth@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2019-06-17 20:48:49 +0000 |
---|---|---|
committer | svenbarth <svenbarth@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2019-06-17 20:48:49 +0000 |
commit | 5f7afecca5989fd37638057aafa6af4d9fedd116 (patch) | |
tree | 8b6a4c53d214997e972554649275747686c7851d | |
parent | 5f07e56cd191b3d005a0ad1e37ec05123fb1fcbe (diff) | |
download | fpc-5f7afecca5989fd37638057aafa6af4d9fedd116.tar.gz |
* fix SetToString/StringToSet for 8/16-bit platforms
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@42244 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r-- | rtl/objpas/typinfo.pp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/rtl/objpas/typinfo.pp b/rtl/objpas/typinfo.pp index c3bb1fa74e..beee4b391d 100644 --- a/rtl/objpas/typinfo.pp +++ b/rtl/objpas/typinfo.pp @@ -1058,16 +1058,16 @@ end; function SetToString(TypeInfo: PTypeInfo; Value: Pointer; Brackets: Boolean): String; type - tsetarr = bitpacked array[0..SizeOf(Integer)*8-1] of 0..1; + tsetarr = bitpacked array[0..SizeOf(LongInt)*8-1] of 0..1; Var I,El,Els,Rem,V,Max : Integer; PTI : PTypeInfo; PTD : PTypeData; - ValueArr : PLongWord; + ValueArr : PLongInt; begin PTD := GetTypeData(TypeInfo); PTI:=PTD^.CompType; - ValueArr := PLongWord(Value); + ValueArr := PLongInt(Value); Result:=''; {$ifdef ver3_0} case PTD^.OrdType of @@ -1085,25 +1085,25 @@ begin end; end; {$else} - Els := PTD^.SetSize div SizeOf(Integer); - Rem := PTD^.SetSize mod SizeOf(Integer); + Els := PTD^.SetSize div SizeOf(LongInt); + Rem := PTD^.SetSize mod SizeOf(LongInt); {$endif} {$ifdef ver3_0} El := 0; {$else} - for El := 0 to (PTD^.SetSize - 1) div SizeOf(Integer) do + for El := 0 to (PTD^.SetSize - 1) div SizeOf(LongInt) do {$endif} begin if El = Els then Max := Rem else - Max := SizeOf(Integer); + Max := SizeOf(LongInt); For I:=0 to Max*8-1 do begin if (tsetarr(ValueArr[El])[i]<>0) then begin - V := I + SizeOf(Integer) * 8 * El; + V := I + SizeOf(LongInt) * 8 * El; If Result='' then Result:=GetEnumName(PTI,V) else @@ -1195,7 +1195,7 @@ begin to reverse the shift } BitOfs := 31 - BitOfs; {$endif} - ResArr[ElOfs] := ResArr[ElOfs] or (1 shl BitOfs); + ResArr[ElOfs] := ResArr[ElOfs] or (LongInt(1) shl BitOfs); end; end; end; |