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) )

Reply via email to