On 15 Mar 2006, at 21:40, ϸòð Êîñàðåâñêèé ñ mail.ru wrote:

I have posted something as bug report #4905, but didn't understand the
answer (why it is not a bug). Could anyone be specific and correct source
code supplied (it is especially crafted little program of 25 lines
including program..., end., and empty lines). (Please, look at that
source before answering, because it seems to me, that fixer didn't.)

Your variable "a:^pbyte;" is not an array, it's a pointer. In Pascal, arrays and pointers are not the same thing, unlike in C. The fact that FPC allows you to abuse array notation to "index" pointers (based on the fact that TP introduced this for pchars) does not change this.

So if you write blockwrite(a,..), you are passing the address of "a" to blockwrite, not the address whatever a points to. And because "b" comes right after "a" in memory, you are first seeing garbage (namely the pointer value of a) followed by the contents of "b".


Jonas_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to