diff Python/import.c @ 17642:e06c36c13f12 legacy-trunk

SF bug #417093: Case sensitive import: dir and .py file w/ same name Directory containing Spam.py spam/__init__.py Then "import Spam" caused a SystemError, because code checking for the existence of "Spam/__init__.py" finds it on a case-insensitive filesystem, but then bails because the directory it finds it in doesn't match case, and then old code assumed that was still an error even though it isn't anymore. Changed the code to just continue looking in this case (instead of calling it an error). So import Spam and import spam both work now.
author Tim Peters <tim.peters@gmail.com>
date Sun, 29 Apr 2001 22:21:25 +0000
parents 32e7d0898eab
children 06332b3c4335
line wrap: on
line diff
--- a/Python/import.c	Sat Apr 28 08:20:22 2001 +0000
+++ b/Python/import.c	Sun Apr 29 22:21:25 2001 +0000
@@ -958,14 +958,11 @@
 		/* Check for package import (buf holds a directory name,
 		   and there's an __init__ module in that directory */
 #ifdef HAVE_STAT
-		if (stat(buf, &statbuf) == 0 &&
-		    S_ISDIR(statbuf.st_mode) &&
-		    find_init_module(buf)) {
-			if (case_ok(buf, len, namelen, name))
-				return &fd_package;
-			else
-				return NULL;
-		}
+		if (stat(buf, &statbuf) == 0 &&       /* it exists */
+		    S_ISDIR(statbuf.st_mode) &&       /* it's a directory */
+		    find_init_module(buf) &&          /* it has __init__.py */
+		    case_ok(buf, len, namelen, name)) /* and case matches */
+			return &fd_package;
 #else
 		/* XXX How are you going to test for directories? */
 #ifdef RISCOS