comparison Python/errors.c @ 67163:5605f6920b63

Issue #10780: PyErr_SetFromWindowsErrWithFilename() and PyErr_SetExcFromWindowsErrWithFilename() decode the filename from the filesystem encoding instead of UTF-8.
author Victor Stinner <victor.stinner@haypocalc.com>
date Tue, 28 Dec 2010 00:28:21 +0000
parents 1b7a0385c65f
children 3c9232a684ae
comparison
equal deleted inserted replaced
67162:fc834b323f26 67163:5605f6920b63
513 PyObject *PyErr_SetExcFromWindowsErrWithFilename( 513 PyObject *PyErr_SetExcFromWindowsErrWithFilename(
514 PyObject *exc, 514 PyObject *exc,
515 int ierr, 515 int ierr,
516 const char *filename) 516 const char *filename)
517 { 517 {
518 PyObject *name = filename ? PyUnicode_FromString(filename) : NULL; 518 PyObject *name = filename ? PyUnicode_DecodeFSDefault(filename) : NULL;
519 PyObject *ret = PyErr_SetExcFromWindowsErrWithFilenameObject(exc, 519 PyObject *ret = PyErr_SetExcFromWindowsErrWithFilenameObject(exc,
520 ierr, 520 ierr,
521 name); 521 name);
522 Py_XDECREF(name); 522 Py_XDECREF(name);
523 return ret; 523 return ret;
550 } 550 }
551 PyObject *PyErr_SetFromWindowsErrWithFilename( 551 PyObject *PyErr_SetFromWindowsErrWithFilename(
552 int ierr, 552 int ierr,
553 const char *filename) 553 const char *filename)
554 { 554 {
555 PyObject *name = filename ? PyUnicode_FromString(filename) : NULL; 555 PyObject *name = filename ? PyUnicode_DecodeFSDefault(filename) : NULL;
556 PyObject *result = PyErr_SetExcFromWindowsErrWithFilenameObject( 556 PyObject *result = PyErr_SetExcFromWindowsErrWithFilenameObject(
557 PyExc_WindowsError, 557 PyExc_WindowsError,
558 ierr, name); 558 ierr, name);
559 Py_XDECREF(name); 559 Py_XDECREF(name);
560 return result; 560 return result;