From: Chet Ramey Date: Mon, 28 Jul 2014 15:08:27 +0000 (-0400) Subject: commit bash-20140725 snapshot X-Git-Tag: bash-4.4-alpha~64 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1034e10bb46edc8db6697d3553d0aae2fc92c655;p=thirdparty%2Fbash.git commit bash-20140725 snapshot --- diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog index 16e6aec65..49a670972 100644 --- a/CWRU/CWRU.chlog +++ b/CWRU/CWRU.chlog @@ -6496,3 +6496,12 @@ tests/array.right and declare -a foo are not equivalent + + 7/22 + ---- +subst.c + - parameter_brace_expand: after calling parameter_brace_expand_indir, + turn off the W_ARRAYIND flag in the word it returns, because there + is no way for it to return the index that should be used, and the + rest of the function assumes that IND is valid if W_ARRAYIND is set. + Fixes bug reported by Corentin Peuvrel diff --git a/doc/aosa-bash.pdf b/doc/aosa-bash.pdf index 006a76776..4c8773a90 100644 Binary files a/doc/aosa-bash.pdf and b/doc/aosa-bash.pdf differ diff --git a/doc/aosa-bash.pdf.old b/doc/aosa-bash.pdf.old new file mode 100644 index 000000000..006a76776 Binary files /dev/null and b/doc/aosa-bash.pdf.old differ diff --git a/subst.c b/subst.c index 41a9dd016..35791db93 100644 --- a/subst.c +++ b/subst.c @@ -339,6 +339,11 @@ dump_word_flags (flags) f = flags; fprintf (stderr, "%d -> ", f); + if (f & W_ARRAYIND) + { + f &= ~W_ARRAYIND; + fprintf (stderr, "W_ARRAYIND%s", f ? "|" : ""); + } if (f & W_ASSIGNASSOC) { f &= ~W_ASSIGNASSOC; @@ -7439,7 +7444,13 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta } if (want_indir) - tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at); + { + tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at); + /* Turn off the W_ARRAYIND flag because there is no way for this function + to return the index we're supposed to be using. */ + if (tdesc && tdesc->flags) + tdesc->flags &= ~W_ARRAYIND; + } else tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind);