[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