Browse Source

Try to fix alignment issues in RTTI code for 64-bit targets which require proper alignment

git-svn-id: trunk@42549 -
pierre 6 years ago
parent
commit
d6d3e171ce
1 changed files with 2 additions and 2 deletions
  1. 2 2
      rtl/inc/rtti.inc

+ 2 - 2
rtl/inc/rtti.inc

@@ -128,7 +128,7 @@ begin
 {$endif VER3_0}
 {$endif VER3_0}
   Count:=PRecordInfoInit(typeInfo)^.Count;
   Count:=PRecordInfoInit(typeInfo)^.Count;
   { Get element info, hacky, but what else can we do? }
   { Get element info, hacky, but what else can we do? }
-  typeInfo:=Pointer(@PRecordInfoInit(typeInfo)^.Count)+SizeOf(PRecordInfoInit(typeInfo)^.Count);
+  typeInfo:=aligntoptr(Pointer(@PRecordInfoInit(typeInfo)^.Count)+SizeOf(PRecordInfoInit(typeInfo)^.Count));
   { Process elements }
   { Process elements }
   for i:=1 to count Do
   for i:=1 to count Do
     begin
     begin
@@ -404,7 +404,7 @@ begin
             Result:=PRecordInfoInit(Temp)^.Size;
             Result:=PRecordInfoInit(Temp)^.Size;
             EleCount:=PRecordInfoInit(Temp)^.Count;
             EleCount:=PRecordInfoInit(Temp)^.Count;
             { Get element info, hacky, but what else can we do? }
             { Get element info, hacky, but what else can we do? }
-            Temp:=Pointer(@PRecordInfoInit(Temp)^.Count)+SizeOf(PRecordInfoInit(Temp)^.Count);
+            Temp:=aligntoptr(Pointer(@PRecordInfoInit(Temp)^.Count)+SizeOf(PRecordInfoInit(Temp)^.Count));
 {$else VER3_0}
 {$else VER3_0}
             Result:=PRecordInfoFull(Temp)^.Size;
             Result:=PRecordInfoFull(Temp)^.Size;
             EleCount:=PRecordInfoFull(Temp)^.Count;
             EleCount:=PRecordInfoFull(Temp)^.Count;