--- /dev/null
+C API functions :c:func:`PyErr_SetFromErrnoWithFilename`,
+:c:func:`PyErr_SetExcFromWindowsErrWithFilename` and
+:c:func:`PyErr_SetFromWindowsErrWithFilename` save now the error code before
+calling :c:func:`PyUnicode_DecodeFSDefault`.
{
PyObject *name = NULL;
if (filename) {
+ int i = errno;
name = PyUnicode_DecodeFSDefault(filename);
if (name == NULL) {
return NULL;
}
+ errno = i;
}
PyObject *result = PyErr_SetFromErrnoWithFilenameObjects(exc, name, NULL);
Py_XDECREF(name);
{
PyObject *name = NULL;
if (filename) {
+ if ((DWORD)ierr == 0) {
+ ierr = (int)GetLastError();
+ }
name = PyUnicode_DecodeFSDefault(filename);
if (name == NULL) {
return NULL;
{
PyObject *name = NULL;
if (filename) {
+ if ((DWORD)ierr == 0) {
+ ierr = (int)GetLastError();
+ }
name = PyUnicode_DecodeFSDefault(filename);
if (name == NULL) {
return NULL;