Issue #10780: PyErr_SetFromWindowsErrWithFilename() and
PyErr_SetExcFromWindowsErrWithFilename() decode the filename from the filesystem encoding instead of UTF-8.
This commit is contained in:
parent
83098a4095
commit
92be939695
|
@ -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
|
Similar to :c:func:`PyErr_SetFromWindowsErr`, with the additional behavior that
|
||||||
if *filename* is not *NULL*, it is passed to the constructor of
|
if *filename* is not *NULL*, it is passed to the constructor of
|
||||||
:exc:`WindowsError` as a third parameter. *filename* is decoded from UTF-8.
|
:exc:`WindowsError` as a third parameter. *filename* is decoded from the
|
||||||
Availability: Windows.
|
filesystem encoding (:func:`sys.getfilesystemencoding`). Availability:
|
||||||
|
Windows.
|
||||||
|
|
||||||
|
|
||||||
.. c:function:: PyObject* PyErr_SetExcFromWindowsErrWithFilename(PyObject *type, int ierr, char *filename)
|
.. c:function:: PyObject* PyErr_SetExcFromWindowsErrWithFilename(PyObject *type, int ierr, char *filename)
|
||||||
|
|
|
@ -202,7 +202,7 @@ PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithFilenameObject(
|
||||||
int, const char *);
|
int, const char *);
|
||||||
PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithFilename(
|
PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithFilename(
|
||||||
int ierr,
|
int ierr,
|
||||||
const char *filename /* decoded from UTF-8 */
|
const char *filename, /* decoded from the filesystem encoding */
|
||||||
);
|
);
|
||||||
#ifndef Py_LIMITED_API
|
#ifndef Py_LIMITED_API
|
||||||
/* XXX redeclare to use WSTRING */
|
/* XXX redeclare to use WSTRING */
|
||||||
|
@ -215,7 +215,7 @@ PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilenameObject(
|
||||||
PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilename(
|
PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilename(
|
||||||
PyObject *exc,
|
PyObject *exc,
|
||||||
int ierr,
|
int ierr,
|
||||||
const char *filename /* decoded from UTF-8 */
|
const char *filename, /* decoded from the filesystem encoding */
|
||||||
);
|
);
|
||||||
#ifndef Py_LIMITED_API
|
#ifndef Py_LIMITED_API
|
||||||
PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithUnicodeFilename(
|
PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithUnicodeFilename(
|
||||||
|
|
|
@ -8,6 +8,10 @@ What's New in Python 3.2 Release Candidate 1
|
||||||
Core and Builtins
|
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
|
- Issue #10779: PyErr_WarnExplicit() decodes the filename from the filesystem
|
||||||
encoding instead of UTF-8.
|
encoding instead of UTF-8.
|
||||||
|
|
||||||
|
|
|
@ -515,7 +515,7 @@ PyObject *PyErr_SetExcFromWindowsErrWithFilename(
|
||||||
int ierr,
|
int ierr,
|
||||||
const char *filename)
|
const char *filename)
|
||||||
{
|
{
|
||||||
PyObject *name = filename ? PyUnicode_FromString(filename) : NULL;
|
PyObject *name = filename ? PyUnicode_DecodeFSDefault(filename) : NULL;
|
||||||
PyObject *ret = PyErr_SetExcFromWindowsErrWithFilenameObject(exc,
|
PyObject *ret = PyErr_SetExcFromWindowsErrWithFilenameObject(exc,
|
||||||
ierr,
|
ierr,
|
||||||
name);
|
name);
|
||||||
|
@ -552,7 +552,7 @@ PyObject *PyErr_SetFromWindowsErrWithFilename(
|
||||||
int ierr,
|
int ierr,
|
||||||
const char *filename)
|
const char *filename)
|
||||||
{
|
{
|
||||||
PyObject *name = filename ? PyUnicode_FromString(filename) : NULL;
|
PyObject *name = filename ? PyUnicode_DecodeFSDefault(filename) : NULL;
|
||||||
PyObject *result = PyErr_SetExcFromWindowsErrWithFilenameObject(
|
PyObject *result = PyErr_SetExcFromWindowsErrWithFilenameObject(
|
||||||
PyExc_WindowsError,
|
PyExc_WindowsError,
|
||||||
ierr, name);
|
ierr, name);
|
||||||
|
|
Loading…
Reference in New Issue