summaryrefslogtreecommitdiffstats
path: root/Python/ceval.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/ceval.c')
-rw-r--r--Python/ceval.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/Python/ceval.c b/Python/ceval.c
index 35ce767..ac995d7 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -1298,6 +1298,14 @@ handle_eval_breaker:
DISPATCH();
}
+ TARGET(END_FOR) {
+ PyObject *value = POP();
+ Py_DECREF(value);
+ value = POP();
+ Py_DECREF(value);
+ DISPATCH();
+ }
+
TARGET(UNARY_POSITIVE) {
PyObject *value = TOP();
PyObject *res = PyNumber_Positive(value);
@@ -3844,9 +3852,11 @@ handle_eval_breaker:
_PyErr_Clear(tstate);
}
/* iterator ended normally */
+ assert(_Py_OPCODE(next_instr[INLINE_CACHE_ENTRIES_FOR_ITER + oparg] == END_FOR));
STACK_SHRINK(1);
Py_DECREF(iter);
- JUMPBY(INLINE_CACHE_ENTRIES_FOR_ITER + oparg);
+ /* Skip END_FOR */
+ JUMPBY(INLINE_CACHE_ENTRIES_FOR_ITER + oparg + 1);
DISPATCH();
}
@@ -3884,7 +3894,7 @@ handle_eval_breaker:
}
STACK_SHRINK(1);
Py_DECREF(it);
- JUMPBY(INLINE_CACHE_ENTRIES_FOR_ITER + oparg);
+ JUMPBY(INLINE_CACHE_ENTRIES_FOR_ITER + oparg + 1);
DISPATCH();
}
@@ -3898,7 +3908,7 @@ handle_eval_breaker:
if (r->index >= r->len) {
STACK_SHRINK(1);
Py_DECREF(r);
- JUMPBY(INLINE_CACHE_ENTRIES_FOR_ITER + oparg);
+ JUMPBY(INLINE_CACHE_ENTRIES_FOR_ITER + oparg + 1);
DISPATCH();
}
long value = (long)(r->start +