patch 7.4.906
Problem:    On MS-Windows the viminfo file is (always) given the hidden
            attribute. (raulnac)
Solution:   Check the hidden attribute in a different way. (Ken Takata)
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 4650a4e..b23f158 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -1795,7 +1795,7 @@
     struct stat	st_old;		/* mch_stat() of existing viminfo file */
 #endif
 #ifdef WIN3264
-    long	perm = -1;
+    int		hidden = FALSE;
 #endif
 
     if (no_viminfo())
@@ -1858,7 +1858,7 @@
 #endif
 #ifdef WIN3264
 	/* Get the file attributes of the existing viminfo file. */
-	perm = mch_getperm(fname);
+	hidden = mch_ishidden(fname);
 #endif
 
 	/*
@@ -2033,7 +2033,7 @@
 
 #ifdef WIN3264
 	/* If the viminfo file was hidden then also hide the new file. */
-	if (perm > 0 && (perm & FILE_ATTRIBUTE_HIDDEN))
+	if (hidden)
 	    mch_hide(fname);
 #endif
     }
diff --git a/src/os_win32.c b/src/os_win32.c
index 25c63e0..2cfd8f3 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -3098,6 +3098,20 @@
 }
 
 /*
+ * Return TRUE if file "name" exists and is hidden.
+ */
+    int
+mch_ishidden(char_u *name)
+{
+    int f = win32_getattrs(name);
+
+    if (f == -1)
+	return FALSE;		    /* file does not exist at all */
+
+    return (f & FILE_ATTRIBUTE_HIDDEN) != 0;
+}
+
+/*
  * return TRUE if "name" is a directory
  * return FALSE if "name" is not a directory or upon error
  */
diff --git a/src/version.c b/src/version.c
index 4f461fe..8e20841 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    906,
+/**/
     905,
 /**/
     904,