summaryrefslogtreecommitdiff
path: root/Python
diff options
context:
space:
mode:
authorThomas Wouters <thomas@python.org>2001-05-23 12:51:22 +0000
committerThomas Wouters <thomas@python.org>2001-05-23 12:51:22 +0000
commita29e4f3d7375c193978dc77e73853b6aca729564 (patch)
tree482528b08433b2180903218317c8cdce3bdea233 /Python
parentdb9486f0b36066234cf87b5fb758a40ce9fa8871 (diff)
downloadcpython-git-a29e4f3d7375c193978dc77e73853b6aca729564.tar.gz
Backport of Tim's checkin 2.177:
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.
Diffstat (limited to 'Python')
-rw-r--r--Python/import.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/Python/import.c b/Python/import.c
index bde49ce91c..15bcca0d20 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -958,14 +958,11 @@ find_module(char *realname, PyObject *path, char *buf, size_t buflen,
/* 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