On Sun, 15 Aug 2004 03:18:59 +0200 Mattias Gaertner <[EMAIL PROTECTED]> wrote:
> On Sat, 14 Aug 2004 23:59:55 +0200 Jonas Maebe <[EMAIL PROTECTED]> > wrote: > > > > > On 14 aug 2004, at 21:07, Mattias Gaertner wrote: > > > > >> The GetOrdProp is used to read boolean values. It reads a longint and > > >> applies "and $ff" to get only the lowest byte. Under PowerPC the > > >> boolean > > >> value is stored just like under i386 in the first byte. Reading the > > >> longint under i386 works, but of course it does not under powerpc. > > >[...] > > > I just found out, that this is also the case for ShortInt, SmallInt, > > > Word > > > and Byte, but not for enums. > > > > To me, the fact that it always reads a longint regardless of the size > > of the property seems to be inherently wrong. What if the last field of > > a class is a byte? Then you can read past the end of the class, > > possibly into unallocated memory causing a crash, no? > > Good point. > Looking at SetOrdProp, I see, that it works correct with PByte, PWord, > PLongInt. > So GetOrdProp is buggy. > > I will send a patch, when I completed the other tests. Attached patch was tested under i386 and ppc. Mattias
fcl_objpas_patch.gz
Description: GNU Zip compressed data