Merged revisions 72273 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r72273 | hirokazu.yamamoto | 2009-05-04 14:28:39 +0900 | 1 line

  Issue #5913: os.listdir() should fail for empty path on windows.
........
This commit is contained in:
Hirokazu Yamamoto 2009-05-04 05:56:46 +00:00
parent 73e8e5f1c7
commit bbb9be7211
2 changed files with 9 additions and 6 deletions

View file

@ -109,6 +109,8 @@ Installation
Library Library
------- -------
- Issue #5913: os.listdir() should fail for empty path on windows.
- Issue #5084: unpickling now interns the attribute names of pickled objects, - Issue #5084: unpickling now interns the attribute names of pickled objects,
saving memory and avoiding growth in size of subsequent pickles. Proposal saving memory and avoiding growth in size of subsequent pickles. Proposal
and original patch by Jake McGuire. and original patch by Jake McGuire.

View file

@ -2183,7 +2183,6 @@ posix_listdir(PyObject *self, PyObject *args)
if (PyArg_ParseTuple(args, "U:listdir", &po)) { if (PyArg_ParseTuple(args, "U:listdir", &po)) {
WIN32_FIND_DATAW wFileData; WIN32_FIND_DATAW wFileData;
Py_UNICODE *wnamebuf; Py_UNICODE *wnamebuf;
Py_UNICODE wch;
/* Overallocate for \\*.*\0 */ /* Overallocate for \\*.*\0 */
len = PyUnicode_GET_SIZE(po); len = PyUnicode_GET_SIZE(po);
wnamebuf = malloc((len + 5) * sizeof(wchar_t)); wnamebuf = malloc((len + 5) * sizeof(wchar_t));
@ -2192,10 +2191,12 @@ posix_listdir(PyObject *self, PyObject *args)
return NULL; return NULL;
} }
wcscpy(wnamebuf, PyUnicode_AS_UNICODE(po)); wcscpy(wnamebuf, PyUnicode_AS_UNICODE(po));
wch = len > 0 ? wnamebuf[len-1] : '\0'; if (len > 0) {
if (wch != L'/' && wch != L'\\' && wch != L':') Py_UNICODE wch = wnamebuf[len-1];
wnamebuf[len++] = L'\\'; if (wch != L'/' && wch != L'\\' && wch != L':')
wcscpy(wnamebuf + len, L"*.*"); wnamebuf[len++] = L'\\';
wcscpy(wnamebuf + len, L"*.*");
}
if ((d = PyList_New(0)) == NULL) { if ((d = PyList_New(0)) == NULL) {
free(wnamebuf); free(wnamebuf);
return NULL; return NULL;
@ -2266,8 +2267,8 @@ posix_listdir(PyObject *self, PyObject *args)
char ch = namebuf[len-1]; char ch = namebuf[len-1];
if (ch != SEP && ch != ALTSEP && ch != ':') if (ch != SEP && ch != ALTSEP && ch != ':')
namebuf[len++] = '/'; namebuf[len++] = '/';
strcpy(namebuf + len, "*.*");
} }
strcpy(namebuf + len, "*.*");
if ((d = PyList_New(0)) == NULL) if ((d = PyList_New(0)) == NULL)
return NULL; return NULL;