mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-07-15 18:11:25 +02:00
41828, 41830: skip SHFILEEXPANSION for new nodes added by stringsubst() in prefork()
This commit is contained in:
parent
82c26793e4
commit
b84d69cf52
3 changed files with 36 additions and 2 deletions
|
@ -1,3 +1,10 @@
|
|||
2017-10-08 Barton E. Schaefer <schaefer@zsh.org>
|
||||
|
||||
* 41830: Test/E01options.ztst: test for 41828.
|
||||
|
||||
* 41828: Src/subst.c: skip SHFILEEXPANSION for new nodes added
|
||||
by stringsubst() in prefork().
|
||||
|
||||
2017-10-07 Oliver Kiddle <opk@zsh.org>
|
||||
|
||||
* 41827: Completion/Zsh/Context/_brace_parameter: correct
|
||||
|
|
19
Src/subst.c
19
Src/subst.c
|
@ -106,15 +106,20 @@ prefork(LinkList list, int flags, int *ret_flags)
|
|||
ret_flags = &ret_flags_local; /* will be discarded */
|
||||
|
||||
queue_signals();
|
||||
for (node = firstnode(list); node; incnode(node)) {
|
||||
node = firstnode(list);
|
||||
while (node) {
|
||||
LinkNode nextnode = 0;
|
||||
if ((flags & (PREFORK_SINGLE|PREFORK_ASSIGN)) == PREFORK_ASSIGN &&
|
||||
(insnode = keyvalpairelement(list, node))) {
|
||||
node = insnode;
|
||||
incnode(node);
|
||||
*ret_flags |= PREFORK_KEY_VALUE;
|
||||
continue;
|
||||
}
|
||||
if (errflag)
|
||||
if (errflag) {
|
||||
unqueue_signals();
|
||||
return;
|
||||
}
|
||||
if (isset(SHFILEEXPANSION)) {
|
||||
/*
|
||||
* Here and below we avoid taking the address
|
||||
|
@ -132,6 +137,12 @@ prefork(LinkList list, int flags, int *ret_flags)
|
|||
* testing if cptr changed...
|
||||
*/
|
||||
setdata(node, cptr);
|
||||
/*
|
||||
* Advance now because we must not expand filenames again
|
||||
* after string substitution (which may insert new nodes).
|
||||
*/
|
||||
nextnode = node;
|
||||
incnode(nextnode);
|
||||
}
|
||||
if (!(node = stringsubst(list, node,
|
||||
flags & ~(PREFORK_TYPESET|PREFORK_ASSIGN),
|
||||
|
@ -139,6 +150,10 @@ prefork(LinkList list, int flags, int *ret_flags)
|
|||
unqueue_signals();
|
||||
return;
|
||||
}
|
||||
if (isset(SHFILEEXPANSION))
|
||||
node = nextnode;
|
||||
else
|
||||
incnode(node);
|
||||
}
|
||||
for (node = firstnode(list); node; incnode(node)) {
|
||||
if (node == stop)
|
||||
|
|
|
@ -1026,6 +1026,18 @@
|
|||
>$lspath $lspath =
|
||||
>$lspath
|
||||
|
||||
() {
|
||||
emulate -L sh
|
||||
v='~/one ~/two'
|
||||
print -l -- $v $v
|
||||
}
|
||||
0:SH_FILE_EXPANSION option with GLOB_SUBST et al.
|
||||
F:Regression test for workers/41811
|
||||
>~/one
|
||||
>~/two
|
||||
>~/one
|
||||
>~/two
|
||||
|
||||
testpat() {
|
||||
if [[ $1 = ${~2} ]]; then print $1 $2 yes; else print $1 $2 no; fi
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue