diff options
Diffstat (limited to 'Src/subst.c')
-rw-r--r-- | Src/subst.c | 13 |
1 files changed, 9 insertions, 4 deletions
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; |