On Fri, Oct 24, 2025, 09:04 Chet Ramey <[email protected]> wrote:
>
> On 10/23/25 11:08 PM, Grisha Levit wrote:
>
> > Looks like circular namerefs might need something similar as well:
> >
> > f() {
> > local -n x; local -p x
> > local -A x; local -p x
> > (local x=(z))
> > }
> > x=x f
> >
> > bash: local: x: not found
> > bash: warning: x: circular name reference
> > bash: warning: x: circular name reference
> > declare -Anx x=()
> > Segmentation fault ( local x=(z) )
>
> Thanks for the report. I get
>
> ./x2: line 2: local: x: not found
> ./x2: line 3: warning: x: circular name reference
> ./x2: line 3: warning: x: circular name reference
> declare -Ax x=()
>
> with the latest devel branch, using interactive and non-interactive shells.
I'm also testing with commit 403b32fa.
Note that `x=x' is in the temporary environment of f.
./bash -c 'f() { local -n x; local -A x; local -p x; (local x=(z)); }; x=x f'
./bash: line 1: warning: x: circular name reference
./bash: line 1: warning: x: circular name reference
declare -Anx x=()
./bash: line 1: 10701 Segmentation fault ( local x=(z) )