updated for version 7.2c-002
diff --git a/src/ex_getln.c b/src/ex_getln.c
index c9760d1..994fe2a 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -3717,7 +3717,7 @@
 	if ((*p != '[' && *p != '{') || !vim_isfilec(*p))
 	    buf[j++] = *p;
     buf[j] = NUL;
-    return vim_strsave_escaped(fname, buf);
+    p = vim_strsave_escaped(fname, buf);
 #else
     p = vim_strsave_escaped(fname, shell ? SHELL_ESC_CHARS : PATH_ESC_CHARS);
     if (shell && csh_like_shell() && p != NULL)
@@ -3730,8 +3730,14 @@
 	vim_free(p);
 	p = s;
     }
-    return p;
 #endif
+
+    /* '>' and '+' are special at the start of some commands, e.g. ":edit" and
+     * ":write".  "cd -" has a special meaning. */
+    if (*p == '>' || *p == '+' || (*p == '-' && p[1] == NUL))
+	escape_fname(&p);
+
+    return p;
 }
 
 /*