Issue #16218: Support non ascii characters in python launcher.
Patch by Serhiy Storchaka.
This commit is contained in:
parent
2e99d63e72
commit
90c0eb28c5
|
@ -363,6 +363,15 @@ class CmdLineTest(unittest.TestCase):
|
|||
self.assertTrue(text[1].startswith(' File '))
|
||||
self.assertTrue(text[3].startswith('NameError'))
|
||||
|
||||
def test_non_utf8(self):
|
||||
# Issue #16218
|
||||
with temp_dir() as script_dir:
|
||||
script_name = _make_test_script(script_dir,
|
||||
'\udcf1\udcea\udcf0\udce8\udcef\udcf2')
|
||||
self._check_script(script_name, script_name, script_name,
|
||||
script_dir, None,
|
||||
importlib.machinery.SourceFileLoader)
|
||||
|
||||
def test_main():
|
||||
support.run_unittest(CmdLineTest)
|
||||
support.reap_children()
|
||||
|
|
|
@ -1358,16 +1358,21 @@ static set_main_loader(PyObject *d, const char *filename, const char *loader_nam
|
|||
{
|
||||
PyInterpreterState *interp;
|
||||
PyThreadState *tstate;
|
||||
PyObject *loader_type, *loader;
|
||||
PyObject *filename_obj, *loader_type, *loader;
|
||||
int result = 0;
|
||||
|
||||
filename_obj = PyUnicode_DecodeFSDefault(filename);
|
||||
if (filename_obj == NULL)
|
||||
return -1;
|
||||
/* Get current thread state and interpreter pointer */
|
||||
tstate = PyThreadState_GET();
|
||||
interp = tstate->interp;
|
||||
loader_type = PyObject_GetAttrString(interp->importlib, loader_name);
|
||||
if (loader_type == NULL) {
|
||||
Py_DECREF(filename_obj);
|
||||
return -1;
|
||||
}
|
||||
loader = PyObject_CallFunction(loader_type, "ss", "__main__", filename);
|
||||
loader = PyObject_CallFunction(loader_type, "sN", "__main__", filename_obj);
|
||||
Py_DECREF(loader_type);
|
||||
if (loader == NULL) {
|
||||
return -1;
|
||||
|
|
Loading…
Reference in New Issue