From 0a88c244ed49aa67543e3fc9b9a5b213e229472d Mon Sep 17 00:00:00 2001 From: Daniel Shahaf Date: Sun, 13 Dec 2015 14:45:22 +0000 Subject: Uncontroversial Changes from Mikael's bcf975a2ea3ebc6ba1ed8150b376bef45e527cda: - paramsubst: Change setting of 'ziplen' --- Src/subst.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'Src/subst.c') diff --git a/Src/subst.c b/Src/subst.c index f2d0f6553..8644ea0d6 100644 --- a/Src/subst.c +++ b/Src/subst.c @@ -3041,18 +3041,20 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int pf_flags, val = dupstring(""); } else { char *sval; - zip = getaparam(s); + int ziplen; + zip = getaparam(s, &ziplen); if (!zip) { sval = getsparam(s); if (sval) zip = hmkarray(sval); + ziplen = 1; + ziplen = !!sval; } if (!isarr) aval = mkarray(val); if (zip) { char **out; - int alen, ziplen, outlen, i = 0; + int alen, outlen, i = 0; alen = arrlen(aval); - ziplen = arrlen(zip); outlen = shortest ^ (alen > ziplen) ? alen : ziplen; if (!shortest && (alen == 0 || ziplen == 0)) { if (ziplen) @@ -3083,6 +3085,7 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int pf_flags, } else if (inbrace && (*s == '|' || *s == Bar || *s == '*' || *s == Star)) { int intersect = (*s == '*' || *s == Star); + int compare_len; char **compare, **ap, **apsrc; ++s; if (*itype_end(s, IIDENT, 0)) { @@ -3090,9 +3093,9 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int pf_flags, zerr("not an identifier: %s", s); return NULL; } - compare = getaparam(s); + compare = getaparam(s, &compare_len); if (compare) { - HashTable ht = newuniqtable(arrlen(compare)+1); + HashTable ht = newuniqtable(compare_len+1); int present; for (ap = compare; *ap; ap++) (void)addhashnode2(ht, *ap, (HashNode) -- cgit 1.4.1