mirror of
https://github.com/python/cpython.git
synced 2024-11-23 01:45:25 +08:00
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
Block a user