Ondrej Pokorny via fpc-pascal <[email protected]> schrieb am So., 11. Sep. 2022, 12:18:
> Am 11.09.2022 um 11:26 schrieb Sven Barth via fpc-pascal: > > Hairy Pixels <[email protected]> schrieb am Sa., 10. Sep. 2022, 03:21: > >> >> >> > On Sep 9, 2022, at 4:48 PM, Sven Barth <[email protected]> >> 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. > > And? An anonymous function is assignment compatible to multiple left sides depending on what it captures. See my announcement mail. Regards, Sven >
_______________________________________________ fpc-pascal maillist - [email protected] https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
