From: Georg Brandl Date: Sat, 3 Jan 2009 23:54:46 +0000 (+0000) Subject: Merged revisions 68139 via svnmerge from X-Git-Tag: v3.0.1~179 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7713ce66a8b3d4390f259e383a023352e176b2aa;p=thirdparty%2FPython%2Fcpython.git Merged revisions 68139 via svnmerge from svn+ssh://svn.python.org/python/branches/py3k ................ r68139 | hirokazu.yamamoto | 2009-01-01 17:03:45 +0100 (Thu, 01 Jan 2009) | 10 lines Merged revisions 68134 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r68134 | hirokazu.yamamoto | 2009-01-02 00:45:39 +0900 | 2 lines Issue #4797: IOError.filename was not set when _fileio.FileIO failed to open file with `str' filename on Windows. ........ ................ --- diff --git a/Misc/NEWS b/Misc/NEWS index c4af5968989e..aacf519007c7 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -20,11 +20,12 @@ Core and Builtins print elapsed times, not only when some objects are uncollectable / unreachable. Original patch by Neil Schemenauer. -- Issue #3439: Add a bit_length method to int. - - Issue #4747: When the terminal does not use utf-8, executing a script with non-ascii characters in its name could fail with a "SyntaxError: None" error. +- Issue #4797: IOError.filename was not set when _fileio.FileIO failed to open + file with `str' filename on Windows. + - Issue #3680: Reference cycles created through a dict, set or deque iterator did not get collected. diff --git a/Modules/_fileio.c b/Modules/_fileio.c index c36a5de1c96c..8579e4e60bdb 100644 --- a/Modules/_fileio.c +++ b/Modules/_fileio.c @@ -284,10 +284,11 @@ fileio_init(PyObject *oself, PyObject *args, PyObject *kwds) Py_END_ALLOW_THREADS if (self->fd < 0) { #ifdef MS_WINDOWS - PyErr_SetFromErrnoWithUnicodeFilename(PyExc_IOError, widename); -#else - PyErr_SetFromErrnoWithFilename(PyExc_IOError, name); + if (widename != NULL) + PyErr_SetFromErrnoWithUnicodeFilename(PyExc_IOError, widename); + else #endif + PyErr_SetFromErrnoWithFilename(PyExc_IOError, name); goto error; } if(dircheck(self, name) < 0)