mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Patch for bug http://bugs.python.org/issue1293
The patch doesn't do the whole name mangling mambo jambo on purpose. MS sure does some weird things and I don't feel like reimplementing ntpath.normpath in C. If the user does deliberately something stupid he is on his own. TODO: Backport to 2.6 (maybe 2.5?) and document that users should only do sys.path.append(os.path.normpath(somepath)) if they want to be on the safe side.
This commit is contained in:
parent
ef181a7619
commit
7d3bc0ade6
1 changed files with 19 additions and 1 deletions
|
@ -2922,6 +2922,7 @@ static int
|
|||
NullImporter_init(NullImporter *self, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
char *path;
|
||||
Py_ssize_t pathlen;
|
||||
|
||||
if (!_PyArg_NoKeywords("NullImporter()", kwds))
|
||||
return -1;
|
||||
|
@ -2930,14 +2931,31 @@ NullImporter_init(NullImporter *self, PyObject *args, PyObject *kwds)
|
|||
&path))
|
||||
return -1;
|
||||
|
||||
if (strlen(path) == 0) {
|
||||
pathlen = strlen(path);
|
||||
if (pathlen == 0) {
|
||||
PyErr_SetString(PyExc_ImportError, "empty pathname");
|
||||
return -1;
|
||||
} else {
|
||||
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)) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue