Am 11.09.2022 um 11:26 schrieb Sven Barth via fpc-pascal:
Hairy Pixels <generic...@gmail.com> schrieb am Sa., 10. Sep. 2022, 03:21:
> On Sep 9, 2022, at 4:48 PM, Sven Barth
<pascaldra...@googlemail.com> wrote:
>
> How about you simply report such corruptions as bugs? I can
always close them as "not a bug" or duplicate if necessary.
>
Well I thought the data may have been saved on the stack and thus
lost when the function exits. What is the expected behavior for
passing these outside of the calling scope?
Looking at your example again - I'm only on my phone currently - it's
indeed your fault because the state passed to a nested function
variable does *not* survive the stack frame it belongs to. That's
where function references shine, because there the state *does* survive.
Shouldn't this assignment be forbidden?
type
TProc = procedure is nested;
function TestNested: TProc;
begin
result := procedure // why is this possible?
begin
writeln(data);
end;
It is not a nested function but an anonymous one.
Ondrej
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal