Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 00f86f2

Browse files
committed
add some missing DISPATCH()
1 parent fc2f641 commit 00f86f2

1 file changed

Lines changed: 16 additions & 9 deletions

File tree

Python/ceval.c

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1955,7 +1955,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
19551955
}
19561956
}
19571957
PUSH(x);
1958-
break;
1958+
DISPATCH();
19591959
}
19601960

19611961
TARGET(STORE_NAME)
@@ -1977,11 +1977,13 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
19771977
TARGET(DELETE_NAME)
19781978
w = GETITEM(names, oparg);
19791979
if ((x = f->f_locals) != NULL) {
1980-
if ((err = PyObject_DelItem(x, w)) != 0)
1980+
if ((err = PyObject_DelItem(x, w)) != 0) {
19811981
format_exc_check_arg(PyExc_NameError,
19821982
NAME_ERROR_MSG,
19831983
w);
1984-
break;
1984+
break;
1985+
}
1986+
DISPATCH();
19851987
}
19861988
PyErr_Format(PyExc_SystemError,
19871989
"no locals when deleting %R", w);
@@ -1999,8 +2001,6 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
19992001
Py_INCREF(w);
20002002
PUSH(w);
20012003
}
2002-
Py_DECREF(v);
2003-
DISPATCH();
20042004
} else if (PyList_CheckExact(v) &&
20052005
PyList_GET_SIZE(v) == oparg) {
20062006
PyObject **items = \
@@ -2016,9 +2016,11 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
20162016
} else {
20172017
/* unpack_iterable() raised an exception */
20182018
why = WHY_EXCEPTION;
2019+
Py_DECREF(v);
2020+
break;
20192021
}
20202022
Py_DECREF(v);
2021-
break;
2023+
DISPATCH();
20222024

20232025
TARGET(UNPACK_EX)
20242026
{
@@ -2029,10 +2031,12 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
20292031
stack_pointer + totalargs)) {
20302032
stack_pointer += totalargs;
20312033
} else {
2034+
Py_DECREF(v);
20322035
why = WHY_EXCEPTION;
2036+
break;
20332037
}
20342038
Py_DECREF(v);
2035-
break;
2039+
DISPATCH();
20362040
}
20372041

20382042
TARGET(STORE_ATTR)
@@ -2052,6 +2056,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
20522056
err = PyObject_SetAttr(v, w, (PyObject *)NULL);
20532057
/* del v.w */
20542058
Py_DECREF(v);
2059+
if (err == 0) DISPATCH();
20552060
break;
20562061

20572062
TARGET(STORE_GLOBAL)
@@ -2064,10 +2069,12 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
20642069

20652070
TARGET(DELETE_GLOBAL)
20662071
w = GETITEM(names, oparg);
2067-
if ((err = PyDict_DelItem(f->f_globals, w)) != 0)
2072+
if ((err = PyDict_DelItem(f->f_globals, w)) != 0) {
20682073
format_exc_check_arg(
20692074
PyExc_NameError, GLOBAL_NAME_ERROR_MSG, w);
2070-
break;
2075+
break;
2076+
}
2077+
DISPATCH();
20712078

20722079
TARGET(LOAD_NAME)
20732080
w = GETITEM(names, oparg);

0 commit comments

Comments
 (0)