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.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):
|
||||
lock = threading.Lock()
|
||||
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)) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue