Jonas Maebe wrote:
On 17 Nov 2009, at 12:04, Graeme Geldenhuys wrote:

I asked a question about a compiler hint in the fpc-users mailing list.
As JoshyFun suggested, is it not maybe better to change FillChar()
definition so first parameter is a out parameter - to prevent
unnecessary compiler hint in code?

No, that is not possible. I once tried to change move and fillchar to use "out" parameters instead 
of "var" parameters, and the result was all sorts of crashes. The reason is that "out" 
has special semantics for reference counted types (they are finalized at the *caller* side), and 
move/fillchar are sometimes used to zero uninitialised data (so if the run time then tries to finalise 
garbage, you get crashes).

In that case I suspect an implementation insect. The compiler/codegenerator should not differ between var and out, just the parser should distinguish imho. A reference should never influence "reference counting" and should surely not have anything to do with finalisation at all, not even because copy on. Most other languages behave like that I think. What is the reason FPC differs?
_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to