Procházet 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 před 17 roky
rodič
revize
94ead30261
1 změnil soubory, kde provedl 4 přidání a 0 odebrání
  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;