diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2010-12-28 00:28:21 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2010-12-28 00:28:21 (GMT) |
commit | 92be939695a43f039f3ef0d0d5fe55dc67607f70 (patch) | |
tree | cf750b1451b8a13650946ec62569ba95a985c64a | |
parent | 83098a4095a66b6562db88802fec5ea108414d58 (diff) | |
download | cpython-92be939695a43f039f3ef0d0d5fe55dc67607f70.zip cpython-92be939695a43f039f3ef0d0d5fe55dc67607f70.tar.gz cpython-92be939695a43f039f3ef0d0d5fe55dc67607f70.tar.bz2 |
Issue #10780: PyErr_SetFromWindowsErrWithFilename() and
PyErr_SetExcFromWindowsErrWithFilename() decode the filename from the
filesystem encoding instead of UTF-8.
-rw-r--r-- | Doc/c-api/exceptions.rst | 5 | ||||
-rw-r--r-- | Include/pyerrors.h | 4 | ||||
-rw-r--r-- | Misc/NEWS | 4 | ||||
-rw-r--r-- | Python/errors.c | 4 |
4 files changed, 11 insertions, 6 deletions
diff --git a/Doc/c-api/exceptions.rst b/Doc/c-api/exceptions.rst index 24ca264..d26e120 100644 --- a/Doc/c-api/exceptions.rst +++ b/Doc/c-api/exceptions.rst @@ -219,8 +219,9 @@ in various ways. There is a separate error indicator for each thread. Similar to :c:func:`PyErr_SetFromWindowsErr`, with the additional behavior that if *filename* is not *NULL*, it is passed to the constructor of - :exc:`WindowsError` as a third parameter. *filename* is decoded from UTF-8. - Availability: Windows. + :exc:`WindowsError` as a third parameter. *filename* is decoded from the + filesystem encoding (:func:`sys.getfilesystemencoding`). Availability: + Windows. .. c:function:: PyObject* PyErr_SetExcFromWindowsErrWithFilename(PyObject *type, int ierr, char *filename) diff --git a/Include/pyerrors.h b/Include/pyerrors.h index 05c5ea8..0f8bcf7 100644 --- a/Include/pyerrors.h +++ b/Include/pyerrors.h @@ -202,7 +202,7 @@ PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithFilenameObject( int, const char *); PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithFilename( int ierr, - const char *filename /* decoded from UTF-8 */ + const char *filename, /* decoded from the filesystem encoding */ ); #ifndef Py_LIMITED_API /* XXX redeclare to use WSTRING */ @@ -215,7 +215,7 @@ PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilenameObject( PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilename( PyObject *exc, int ierr, - const char *filename /* decoded from UTF-8 */ + const char *filename, /* decoded from the filesystem encoding */ ); #ifndef Py_LIMITED_API PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithUnicodeFilename( @@ -8,6 +8,10 @@ What's New in Python 3.2 Release Candidate 1 Core and Builtins ----------------- +- Issue #10780: PyErr_SetFromWindowsErrWithFilename() and + PyErr_SetExcFromWindowsErrWithFilename() decode the filename from the + filesystem encoding instead of UTF-8. + - Issue #10779: PyErr_WarnExplicit() decodes the filename from the filesystem encoding instead of UTF-8. diff --git a/Python/errors.c b/Python/errors.c index d5a6fae..5a9a624 100644 --- a/Python/errors.c +++ b/Python/errors.c @@ -515,7 +515,7 @@ PyObject *PyErr_SetExcFromWindowsErrWithFilename( int ierr, const char *filename) { - PyObject *name = filename ? PyUnicode_FromString(filename) : NULL; + PyObject *name = filename ? PyUnicode_DecodeFSDefault(filename) : NULL; PyObject *ret = PyErr_SetExcFromWindowsErrWithFilenameObject(exc, ierr, name); @@ -552,7 +552,7 @@ PyObject *PyErr_SetFromWindowsErrWithFilename( int ierr, const char *filename) { - PyObject *name = filename ? PyUnicode_FromString(filename) : NULL; + PyObject *name = filename ? PyUnicode_DecodeFSDefault(filename) : NULL; PyObject *result = PyErr_SetExcFromWindowsErrWithFilenameObject( PyExc_WindowsError, ierr, name); |