about summary refs log tree commit diff
path: root/Src/Zle
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Zle')
-rw-r--r--Src/Zle/compresult.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/Src/Zle/compresult.c b/Src/Zle/compresult.c
index 92bb2c803..544d4a8a8 100644
--- a/Src/Zle/compresult.c
+++ b/Src/Zle/compresult.c
@@ -732,16 +732,22 @@ mod_export int
 ztat(char *nam, struct stat *buf, int ls)
 {
     int e;
-    char *b;
 
     if (!(ls ? lstat(nam, buf) : stat(nam, buf)))
 	return 0;
-
-    b = ztrdupstrip(nam, '\\');
-
-    e = ls ? lstat(b, buf) : stat(b, buf);
-    zsfree(b);
-    return e;
+    else {
+	char *p;
+	VARARR(char, b, strlen(nam) + 1);
+
+	for (p = b; *nam; nam++)
+	    if (*nam == '\\' && nam[1])
+		*p++ = *++nam;
+	    else
+		*p++ = *nam;
+	*p = '\0';
+	
+	return ls ? lstat(b, buf) : stat(b, buf);
+    }
 }
 
 /* Insert a single match in the command line. */