patch 7.4.1114
Problem:    delete() does not work well with symbolic links.
Solution:   Recognize symbolik links.
diff --git a/src/fileio.c b/src/fileio.c
index 6dbdea2..f809eb5 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -7294,7 +7294,19 @@
     int		i;
     char_u	*exp;
 
-    if (mch_isdir(name))
+    /* A symbolic link to a directory itself is deleted, not the directory it
+     * points to. */
+    if (
+# if defined(WIN32)
+	 mch_isdir(name) && !mch_is_symbolic_link(name)
+# else
+#  ifdef UNIX
+	 mch_isrealdir(name)
+#  else
+	 mch_isdir(name)
+#  endif
+# endif
+	    )
     {
 	vim_snprintf((char *)NameBuff, MAXPATHL, "%s/*", name);
 	exp = vim_strsave(NameBuff);