Jonas Maebe 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?

No. Classes are always allocated on the heap so the memory block is always at least a multiple of 4.


_______________________________________________
fpc-devel maillist  -  [EMAIL PROTECTED]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to