Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > gnu.bash.bug > #16247

Re: Variable references (declare -n, "nameref") are limited to a depth of 8.

From Chet Ramey <chet.ramey@case.edu>
Newsgroups gnu.bash.bug
Subject Re: Variable references (declare -n, "nameref") are limited to a depth of 8.
Date 2020-04-27 11:42 -0400
Organization ITS, Case Western Reserve University
Message-ID <mailman.1401.1588002137.3066.bug-bash@gnu.org> (permalink)
References <courier.000000005EA3DECF.0000B702@charon.podzimek.org> <09fac3bd-2d96-c0ee-ac03-f729507af74a@case.edu> <1b9cc5d.a1fea93e.171b497bdae@podzimek.org> <8f57575e-6d9e-9162-e708-3c848950c8ea@case.edu>

Show all headers | View raw


On 4/25/20 11:46 PM, Andrej Podzimek wrote:
>>> Description:
>>>
>>>   While looking for a way to share a "cache" array with a recursive function
>>>   call stack (using local -n (nameref)), I hit a well-known problem with
>>>   "circular name reference" (which has been around for a long time). 
>>
>> Yes, that's how it does loop detection.
> 
> There are, however, no loops involved in my $a … $k example; it is merely a chain of declare -n references starting from a regular variable $a. The chain breaks unexpectedly and silently after 8 links ($j and $k appear to be empty).
> 
> Better options, IMHO, would include:
> 
> (a) An unlimited number of declare -n resolution steps (as long as there are no cycles, i.e., no variable name(*) is encountered twice). This may have performance consequences when abused, but it would be better than unexpected empty values after >8 steps.
> 
> (b) An error message when trying to dereference $j or $k (links No. 9 and 10 in the chain example), saying e.g. “maximum nameref depth (8) exceeded”. This would at least make the problem obvious and easy to debug.

I would welcome patches that did either one of these things.

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
		 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    chet@case.edu    http://tiswww.cwru.edu/~chet/

Back to gnu.bash.bug | Previous | Next | Find similar


Thread

Re: Variable references (declare -n, "nameref") are limited to a depth of 8. Chet Ramey <chet.ramey@case.edu> - 2020-04-27 11:42 -0400

csiph-web