[fpc-devel] Just to confirm, "with" behaviour expected
Michael Van Canneyt
michael at freepascal.org
Mon Aug 14 14:52:54 CEST 2023
On Mon, 14 Aug 2023, Martin Frb via fpc-devel wrote:
> In the below code, the array is resized (and more important relocated in
> mem) inside the function "bar".
>
> The commented line (without "with") works as expected.
>
> The "with" line has a different behaviour. I guess it is by design. Just
> wanted to confirm.
>
> The version with "with" prints 12345 for " writeln(a[i,j].x);"
> For all I can tell the return value of "bar" was written to the old
> address of that array-entry.
>
> Does "with" take the "address" of the value, and operate on that
> address, even if the address of that value could change within the
> "with" statement.
You may not do this. It is even documented.
See the remark at the end of this page:
https://www.freepascal.org/docs-html/current/ref/refsu62.html#x172-19600013.2.8
Michael.
More information about the fpc-devel
mailing list