[Python-checkins] r58905 - python/trunk/Python/import.c
christian.heimes
python-checkins at python.org
Wed Nov 7 18:50:55 CET 2007
Author: christian.heimes
Date: Wed Nov 7 18:50:54 2007
New Revision: 58905
Modified:
python/trunk/Python/import.c
Log:
Backported fix for bug #1392 from py3k branch r58903.
Modified: python/trunk/Python/import.c
==============================================================================
--- python/trunk/Python/import.c (original)
+++ python/trunk/Python/import.c Wed Nov 7 18:50:54 2007
@@ -2978,6 +2978,7 @@
NullImporter_init(NullImporter *self, PyObject *args, PyObject *kwds)
{
char *path;
+ Py_ssize_t pathlen;
if (!_PyArg_NoKeywords("NullImporter()", kwds))
return -1;
@@ -2986,7 +2987,8 @@
&path))
return -1;
- if (strlen(path) == 0) {
+ pathlen = strlen(path);
+ if (pathlen == 0) {
PyErr_SetString(PyExc_ImportError, "empty pathname");
return -1;
} else {
@@ -2994,7 +2996,23 @@
struct stat statbuf;
int rv;
+#ifdef MS_WINDOWS
+ /* MS Windows' stat chokes on paths like C:\\path\\. Try to
+ * recover *one* time by stripping of a trailing slash or
+ * back slash. http://bugs.python.org/issue1293
+ */
rv = stat(path, &statbuf);
+ if (rv != 0 && pathlen <= MAXPATHLEN &&
+ (path[pathlen-1] == '/' || path[pathlen-1] == '\\')) {
+ char mangled[MAXPATHLEN+1];
+
+ strcpy(mangled, path);
+ mangled[pathlen-1] = '0円';
+ rv = stat(mangled, &statbuf);
+ }
+#else
+ rv = stat(path, &statbuf);
+#endif
if (rv == 0) {
/* it exists */
if (S_ISDIR(statbuf.st_mode)) {
More information about the Python-checkins
mailing list