diff --git a/Python/import.c b/Python/import.c
index d04fa50..dd8710e 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -114,19 +114,34 @@
 };
 #endif
 
-#ifdef HAVE_STAT
+#ifdef MS_WINDOWS
+int isdir(char *path) {
+	DWORD rv;
+	/* see issue1293 and issue3677:
+	 * stat() on Windows doesn't recognise paths like
+	 * "e:\\shared\\" and "\\\\whiterab-c2znlh\\shared" as dirs.
+	 * Also reference issue6727:
+	 * stat() on Windows is broken and doesn't resolve symlinks properly.
+	 */
+	rv = GetFileAttributesA(path);
+	return rv != INVALID_FILE_ATTRIBUTES && rv & FILE_ATTRIBUTE_DIRECTORY;
+}
+#else
+#if HAVE_STAT
 int isdir(char *path) {
     struct stat statbuf;
 	return stat(path, &statbuf) == 0 && S_ISDIR(statbuf.st_mode);
 }
 #else
+#ifdef RISCOS
 /* with RISCOS, isdir is in unixstuff */
-#ifndef RISCOS
+#else
 int isdir(char *path) {
 	return 0;
 }
-#endif
-#endif
+#endif /* RISCOS */
+#endif /* HAVE_STAT */
+#endif /* MS_WINDOWS */
 
 /* Initialize things */
 
@@ -3185,49 +3200,11 @@
         PyErr_SetString(PyExc_ImportError, "empty pathname");
         return -1;
     } else {
-#ifndef RISCOS
-#ifndef MS_WINDOWS
-        struct stat statbuf;
-        int rv;
-
-        rv = stat(path, &statbuf);
-        if (rv == 0) {
-            /* it exists */
-            if (S_ISDIR(statbuf.st_mode)) {
-                /* it's a directory */
-                PyErr_SetString(PyExc_ImportError,
-                                "existing directory");
-                return -1;
-            }
-        }
-#else /* MS_WINDOWS */
-        DWORD rv;
-        /* see issue1293 and issue3677:
-         * stat() on Windows doesn't recognise paths like
-         * "e:\\shared\\" and "\\\\whiterab-c2znlh\\shared" as dirs.
-         */
-        rv = GetFileAttributesA(path);
-        if (rv != INVALID_FILE_ATTRIBUTES) {
-            /* it exists */
-            if (rv & FILE_ATTRIBUTE_DIRECTORY) {
-                /* it's a directory */
-                PyErr_SetString(PyExc_ImportError,
-                                "existing directory");
-                return -1;
-            }
-        }
-#endif
-#else /* RISCOS */
-        if (object_exists(path)) {
-            /* it exists */
-            if (isdir(path)) {
-                /* it's a directory */
-                PyErr_SetString(PyExc_ImportError,
-                                "existing directory");
-                return -1;
-            }
-        }
-#endif
+		if(isdir(path)) {
+			PyErr_SetString(PyExc_ImportError,
+							"existing directory");
+			return -1;
+		}
     }
     return 0;
 }
