mirror of https://github.com/python/cpython.git
[3.13] gh-126223: Propagate unicode errors in `_interpreters.create()` (GH-126224) (#126242)
gh-126223: Propagate unicode errors in `_interpreters.create()` (GH-126224)
(cherry picked from commit 01415213d7
)
Co-authored-by: Peter Bierma <zintensitydev@gmail.com>
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
ac00bf0e96
commit
89664d4d48
|
@ -55,6 +55,9 @@ def test_in_main(self):
|
|||
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.
|
|
@ -403,7 +403,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