[fpc-devel] Redefine FillChar() to use out parameter instead

Thaddy thaddy at thaddy.com
Tue Nov 17 13:43:32 CET 2009

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?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20091117/193af57e/attachment.html>

More information about the fpc-devel mailing list