[fpc-pascal] Illogical automatic dereferencing
Florian Klaempfl
florian at freepascal.org
Tue Oct 13 16:19:40 CEST 2009
Jonas Maebe schrieb:
> Florian Klaempfl wrote on Tue, 13 Oct 2009:
>
>> When messing with pointers you've to know what to write because pointers
>> allow unlimited access to internal data structures. Sorry, but I can't
>> help you if you guess wrong while playing with dangerous stuff (and the
>> original poster did so: using move is a dangerous operation) instead of
>> reading the manual.
>
> I think that "all pointers can be indexed as arrays" can easily cause
> accidentantal errors though. I can't find it anymore, but I remember
> Pierre once fixed a bug in the compiler sources itself where someone
> accidentally used move(pstring_var[1],...) instead of
> move(pstring_var^[1],..). That at least was not a case of not
> understanding how pointers work, but a simple case of a typo which
> couldn't be caught anymore by the compiler due to this extension.
>
What is the alternative?
Declare things like
tchar = array[0..maxint] of char;
pchar = ^tchar;
?
Small typo, move(p,... instead of move(p^,... and things break as well
besides unneeded and wrong range check code being generated etc.
More information about the fpc-pascal
mailing list