From 2fbc131ca81470a6b9aa077578f2eb58a7e8e008 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Mon, 17 Nov 2008 16:11:29 +0000 Subject: 26055: ensure process substitution is handled before parameter and command --- Src/subst.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'Src') diff --git a/Src/subst.c b/Src/subst.c index 5cc4748b8..a8f894c68 100644 --- a/Src/subst.c +++ b/Src/subst.c @@ -152,8 +152,8 @@ stringsubst(LinkList list, LinkNode node, int ssub, int asssub) char *str = str3, c; while (!errflag && (c = *str)) { - if ((c == Inang || c == Outang || (str == str3 && c == Equals)) && - str[1] == Inpar) { + if (((c = *str) == Inang || c == Outang || (str == str3 && c == Equals)) + && str[1] == Inpar) { char *subst, *rest, *snew, *sptr; int str3len = str - str3, sublen, restlen; @@ -181,8 +181,13 @@ stringsubst(LinkList list, LinkNode node, int ssub, int asssub) str3 = snew; str = snew + str3len + sublen; setdata(node, str3); - continue; - } else if ((qt = c == Qstring) || c == String) { + } else + str++; + } + str = str3; + + while (!errflag && (c = *str)) { + if ((qt = c == Qstring) || c == String) { if ((c = str[1]) == Inpar) { if (!qt) list->list.flags |= LF_ARRAY; -- cgit 1.4.1