Message210824
"And you should avoid passing raw bytes string to build an error message, you probably has the Python object version of the filename somewhere in your code."
Oh, I remember the reason why char* must not be used to build an OSError: on Windows, you should never try to decode a bytes filename, because it may raise a UnicodeDecodeError while you are trying to build an OSError. See issue #15478 for the rationale.
Just pass the original PyObject* you get in path_t. There is even an unit test to ensure that OSError.filename is the original name: OSErrorTests.test_oserror_filename() in test_os. |
|
Date |
User |
Action |
Args |
2014-02-10 11:10:26 | vstinner | set | recipients:
+ vstinner, richard, georg.brandl, larry, Arfrever, python-dev, serhiy.storchaka, vajrasky |
2014-02-10 11:10:26 | vstinner | set | messageid: <1392030626.5.0.774242247652.issue20517@psf.upfronthosting.co.za> |
2014-02-10 11:10:26 | vstinner | link | issue20517 messages |
2014-02-10 11:10:26 | vstinner | create | |
|