summaryrefslogtreecommitdiff
path: root/Python/pystate.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/pystate.c')
-rw-r--r--Python/pystate.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/Python/pystate.c b/Python/pystate.c
index f0b2a6729f..acb672bdd9 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -281,10 +281,11 @@ _PyInterpreterState_DeleteExceptMain()
HEAD_LOCK();
PyInterpreterState *interp = _PyRuntime.interpreters.head;
_PyRuntime.interpreters.head = NULL;
- for (; interp != NULL; interp = interp->next) {
+ while (interp != NULL) {
if (interp == _PyRuntime.interpreters.main) {
_PyRuntime.interpreters.main->next = NULL;
_PyRuntime.interpreters.head = interp;
+ interp = interp->next;
continue;
}
@@ -293,7 +294,9 @@ _PyInterpreterState_DeleteExceptMain()
if (interp->id_mutex != NULL) {
PyThread_free_lock(interp->id_mutex);
}
- PyMem_RawFree(interp);
+ PyInterpreterState *prev_interp = interp;
+ interp = interp->next;
+ PyMem_RawFree(prev_interp);
}
HEAD_UNLOCK();