From ae583886194c41ad83b7e932c4b6e8cd3d3c5576 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Tue, 10 Dec 2019 10:32:48 +0000 Subject: 44997: GLOB_COMPLETE fix for compctl file completion. Dashes could cause problems in directory prefixes. --- Src/Zle/compctl.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'Src') diff --git a/Src/Zle/compctl.c b/Src/Zle/compctl.c index f242e1b28..1dcec387d 100644 --- a/Src/Zle/compctl.c +++ b/Src/Zle/compctl.c @@ -3178,7 +3178,27 @@ makecomplistflags(Compctl cc, char *s, int incmd, int compadd) /* Compute line prefix/suffix. */ lpl = offs; lpre = zhalloc(lpl + 1); - memcpy(lpre, s, lpl); + if (comppatmatch) + { + int ccount; + char *psrc, *pdst; + for (ccount = 0, psrc = s, pdst = lpre; + ccount < lpl; + ++ccount, ++psrc, ++pdst) + { + if (*psrc == Meta) + { + ccount++; + *pdst++ = *psrc++; + *pdst = *psrc; + } else if (*psrc == Dash) + *pdst = '-'; + else + *pdst = *psrc; + } + } + else + memcpy(lpre, s, lpl); lpre[lpl] = '\0'; qlpre = quotename(lpre); lsuf = dupstring(s + offs); -- cgit 1.4.1