[fpc-devel]PowerPC, TypInfo

Mattias Gaertner nc-gaertnma at netcologne.de
Sun Aug 15 03:18:59 CEST 2004


On Sat, 14 Aug 2004 23:59:55 +0200  Jonas Maebe <jonas at zeus.ugent.be> 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.
> >>
> >> So, either the compiler is wrong or the GetOrdValue function is wrong.
> >>
> >> Which one should I report?
> >
> > 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. 


Mattias




More information about the fpc-devel mailing list