On Thu, Apr 8, 2021 at 2:44 AM Chet Ramey <chet.ra...@case.edu> wrote:
> Indirection does not check whether or not the variable it's indirecting
> is $@/$* or ${array[@/*]}. It simply goes by the return value.

It looks like it can easily be fixed with this:

diff --git a/subst.c b/subst.c
index 4f12f22d..cc9a6803 100644
--- a/subst.c
+++ b/subst.c
@@ -9245,7 +9245,13 @@ parameter_brace_expand (string, indexp, quoted,
pflags, quoted_dollar_atp, conta
     }

 #if defined (ARRAY_VARS)
-  if (valid_array_reference (name, 0))
+  if (want_indir)
+    {
+      if (*contains_dollar_at) {
+    all_element_arrayref = 1;
+      }
+    }
+  else if (valid_array_reference (name, 0))
     {
       int qflags;
       char *t;


-- 
konsolebox

Reply via email to