mirror of https://github.com/python/cpython
gh-126223: Propagate unicode errors in `_interpreters.create()` (#126224)
Co-authored-by: sobolevn <mail@sobolevn.me> Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
This commit is contained in:
parent
8c22eba877
commit
01415213d7
|
@ -54,6 +54,9 @@ class CreateTests(TestBase):
|
||||||
self.assertIsInstance(interp, interpreters.Interpreter)
|
self.assertIsInstance(interp, interpreters.Interpreter)
|
||||||
self.assertIn(interp, interpreters.list_all())
|
self.assertIn(interp, interpreters.list_all())
|
||||||
|
|
||||||
|
# GH-126221: Passing an invalid Unicode character used to cause a SystemError
|
||||||
|
self.assertRaises(UnicodeEncodeError, _interpreters.create, '\udc80')
|
||||||
|
|
||||||
def test_in_thread(self):
|
def test_in_thread(self):
|
||||||
lock = threading.Lock()
|
lock = threading.Lock()
|
||||||
interp = None
|
interp = None
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Raise a :exc:`UnicodeEncodeError` instead of a :exc:`SystemError` upon
|
||||||
|
calling :func:`!_interpreters.create` with an invalid Unicode character.
|
|
@ -402,7 +402,11 @@ config_from_object(PyObject *configobj, PyInterpreterConfig *config)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (PyUnicode_Check(configobj)) {
|
else if (PyUnicode_Check(configobj)) {
|
||||||
if (init_named_config(config, PyUnicode_AsUTF8(configobj)) < 0) {
|
const char *utf8name = PyUnicode_AsUTF8(configobj);
|
||||||
|
if (utf8name == NULL) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (init_named_config(config, utf8name) < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue