summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
Diffstat (limited to 'Python')
-rw-r--r--Python/bytecodes.c14
-rw-r--r--Python/executor_cases.c.h14
2 files changed, 24 insertions, 4 deletions
diff --git a/Python/bytecodes.c b/Python/bytecodes.c
index 15b48ae..3432b02 100644
--- a/Python/bytecodes.c
+++ b/Python/bytecodes.c
@@ -2448,7 +2448,12 @@ dummy_func(
_PyListIterObject *it = (_PyListIterObject *)iter;
assert(Py_TYPE(iter) == &PyListIter_Type);
PyListObject *seq = it->it_seq;
- if (seq == NULL || it->it_index >= PyList_GET_SIZE(seq)) {
+ if (seq == NULL) {
+ exhausted = Py_True;
+ }
+ else if (it->it_index >= PyList_GET_SIZE(seq)) {
+ Py_DECREF(seq);
+ it->it_seq = NULL;
exhausted = Py_True;
}
else {
@@ -2499,7 +2504,12 @@ dummy_func(
_PyTupleIterObject *it = (_PyTupleIterObject *)iter;
assert(Py_TYPE(iter) == &PyTupleIter_Type);
PyTupleObject *seq = it->it_seq;
- if (seq == NULL || it->it_index >= PyTuple_GET_SIZE(seq)) {
+ if (seq == NULL) {
+ exhausted = Py_True;
+ }
+ else if (it->it_index >= PyTuple_GET_SIZE(seq)) {
+ Py_DECREF(seq);
+ it->it_seq = NULL;
exhausted = Py_True;
}
else {
diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h
index 626baec..ae21ffa 100644
--- a/Python/executor_cases.c.h
+++ b/Python/executor_cases.c.h
@@ -1750,7 +1750,12 @@
_PyListIterObject *it = (_PyListIterObject *)iter;
assert(Py_TYPE(iter) == &PyListIter_Type);
PyListObject *seq = it->it_seq;
- if (seq == NULL || it->it_index >= PyList_GET_SIZE(seq)) {
+ if (seq == NULL) {
+ exhausted = Py_True;
+ }
+ else if (it->it_index >= PyList_GET_SIZE(seq)) {
+ Py_DECREF(seq);
+ it->it_seq = NULL;
exhausted = Py_True;
}
else {
@@ -1787,7 +1792,12 @@
_PyTupleIterObject *it = (_PyTupleIterObject *)iter;
assert(Py_TYPE(iter) == &PyTupleIter_Type);
PyTupleObject *seq = it->it_seq;
- if (seq == NULL || it->it_index >= PyTuple_GET_SIZE(seq)) {
+ if (seq == NULL) {
+ exhausted = Py_True;
+ }
+ else if (it->it_index >= PyTuple_GET_SIZE(seq)) {
+ Py_DECREF(seq);
+ it->it_seq = NULL;
exhausted = Py_True;
}
else {