On 10 Mar 2015, at 14:29, [email protected] wrote:
On 10.03.2015 15:47, Jonas Maebe wrote:
Do you already have an svn account?
The one I had back in 2012.
My old branch is here:
http://svn.freepascal.org/svn/fpc/branches/blaise/closures
You should still have access to everything under
http://svn.freepascal.org/svn/fpc/branches/blaise
It indicates a problem in the compiler.
Thanks.
Shall I file it in the bug tracker, then?
Can't hurt.
As the message indicates, it means that you (or someone else before
you) are trying to free a temp (allocated via tg.gettemp or the
like) twice.
I am slightly confused by your choice of the pronoun, so allow me to
reiterate: the issue exists in the "stock" compiler, even without my
patches applied.
Then it will be "someone else before you".
The generated code will still be ok in this case, but it could lead
to trouble in case a temp would be allocated again in between which
would happen to get the same address as the old one, since then the
second free of the old temp will free the new temp.
I am not at all familiar with this part of the compiler, so devising
a test case, that would result in invalid codegen, would be
difficult for me.
Based on your explanation, it seems it would be something like
Foo().Bar( YieldAnotherTemp() )
assuming that YieldAnotherTemp() is called after Foo()?
It depends on when exactly the second free of the initial temp occurs.
A testcase that results in invalid code is not necessary, however. It
should be easily debuggable without that (although fixing it may be
more tricky).
Jonas
_______________________________________________
fpc-devel maillist - [email protected]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel