diff options
author | Barton E. Schaefer <schaefer@zsh.org> | 2017-02-25 15:55:14 -0800 |
---|---|---|
committer | Barton E. Schaefer <schaefer@zsh.org> | 2017-02-25 15:56:50 -0800 |
commit | 4b8db48c6bd3c0230a5d81f49e478857adf9cda8 (patch) | |
tree | ae8f9c4f60e57ebdbda0abeeebee6f0024f7f5f5 /Src | |
parent | 5a32ced1be6baf4bafce1057b02376adcc58914f (diff) | |
download | zsh-4b8db48c6bd3c0230a5d81f49e478857adf9cda8.tar.gz zsh-4b8db48c6bd3c0230a5d81f49e478857adf9cda8.tar.xz zsh-4b8db48c6bd3c0230a5d81f49e478857adf9cda8.zip |
40640: the (A) parameter flag forces array result even if assignment syntax is not used
Diffstat (limited to 'Src')
-rw-r--r-- | Src/subst.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/Src/subst.c b/Src/subst.c index 4df53bdb7..02dbe2864 100644 --- a/Src/subst.c +++ b/Src/subst.c @@ -2902,6 +2902,7 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int pf_flags, } else setaparam(idbeg, a); isarr = 1; + arrasg = 0; } else { untokenize(val); setsparam(idbeg, ztrdup(val)); @@ -3784,6 +3785,16 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int pf_flags, insertlinknode(l, n, dupstring(fstr)); /* appended, no incnode */ *fstr = '\0'; } + if (arrasg && !isarr) { + /* + * Caller requested this be forced to an array even if scalar. + * Any point in distinguishing arrasg == 2 (assoc array) here? + */ + l->list.flags |= LF_ARRAY; + aval = hmkarray(val); + isarr = 1; + DPUTS(!val, "value is NULL in paramsubst, empty array"); + } if (isarr) { char *x; char *y; |