Fixed possible abort in ceval loop if _PyUnicode_FromId() fails.
Every opcode should end with DISPATCH() or goto error.
This commit is contained in:
commit
4678b2f448
|
@ -2140,7 +2140,7 @@ _PyEval_EvalFrameDefault(PyFrameObject *f, int throwflag)
|
||||||
else {
|
else {
|
||||||
PyObject *build_class_str = _PyUnicode_FromId(&PyId___build_class__);
|
PyObject *build_class_str = _PyUnicode_FromId(&PyId___build_class__);
|
||||||
if (build_class_str == NULL)
|
if (build_class_str == NULL)
|
||||||
break;
|
goto error;
|
||||||
bc = PyObject_GetItem(f->f_builtins, build_class_str);
|
bc = PyObject_GetItem(f->f_builtins, build_class_str);
|
||||||
if (bc == NULL) {
|
if (bc == NULL) {
|
||||||
if (PyErr_ExceptionMatches(PyExc_KeyError))
|
if (PyErr_ExceptionMatches(PyExc_KeyError))
|
||||||
|
@ -2652,7 +2652,7 @@ _PyEval_EvalFrameDefault(PyFrameObject *f, int throwflag)
|
||||||
/* do the same if locals() is not a dict */
|
/* do the same if locals() is not a dict */
|
||||||
PyObject *ann_str = _PyUnicode_FromId(&PyId___annotations__);
|
PyObject *ann_str = _PyUnicode_FromId(&PyId___annotations__);
|
||||||
if (ann_str == NULL) {
|
if (ann_str == NULL) {
|
||||||
break;
|
goto error;
|
||||||
}
|
}
|
||||||
ann_dict = PyObject_GetItem(f->f_locals, ann_str);
|
ann_dict = PyObject_GetItem(f->f_locals, ann_str);
|
||||||
if (ann_dict == NULL) {
|
if (ann_dict == NULL) {
|
||||||
|
|
Loading…
Reference in New Issue