Prechádzať zdrojové kódy

* fix padding on 64 bit big endian CPUs in TInterfaceEntry: wrong offset of a member caused memory corruption and then access violations during object creation. Fixes timplements* tests.

git-svn-id: trunk@11031 -
tom_at_work 17 rokov pred
rodič
commit
94ead30261
1 zmenil súbory, kde vykonal 4 pridanie a 0 odobranie
  1. 4 0
      rtl/inc/objpash.inc

+ 4 - 0
rtl/inc/objpash.inc

@@ -125,7 +125,11 @@
          IOffset     : ptruint;
          IIDStr      : pshortstring; { never nil. Com: upper(GuidToString(IID^)) }
          case boolean of
+{$ifdef ENDIAN_BIG}
+           true      : ({$IFDEF CPU64}__pad: longint;{$ENDIF}IType : tinterfaceentrytype);
+{$else ENDIAN_BIG}
            true      : (IType       : tinterfaceentrytype);
+{$endif ENDIAN_BIG}
            false     : (__pad_dummy : pointer);
        end;