https://github.com/python/cpython/commit/8cdd636f877c906121b27934522876a1d9ac12db
commit: 8cdd636f877c906121b27934522876a1d9ac12db
branch: 3.13
author: Eric Snow <[email protected]>
committer: ericsnowcurrently <[email protected]>
date: 2024-11-21T10:33:15-07:00
summary:
[3.13] gh-126986: Stop Using _PyInterpreterState_FailIfNotRunning() (gh-127112)
This is a pseudo-backport of d6b3e78 (gh-126988). In that change for 3.14+, we
dropped _PyInterpreterState_FailIfNotRunning() and added
_PyErr_SetInterpreterAlreadyRunning(). Here, we replace usage of
_PyInterpreterState_FailIfNotRunning() with the inlined equivalent of
_PyErr_SetInterpreterAlreadyRunning(), without adding that function. That way
we avoid changing the 3.13 ABI.
files:
M Python/crossinterp.c
M Python/pystate.c
diff --git a/Python/crossinterp.c b/Python/crossinterp.c
index 2af0dd6191aa4e..01bb45d23bac1b 100644
--- a/Python/crossinterp.c
+++ b/Python/crossinterp.c
@@ -985,8 +985,8 @@ _PyXI_ApplyErrorCode(_PyXI_errcode code, PyInterpreterState
*interp)
break;
case _PyXI_ERR_ALREADY_RUNNING:
assert(interp != NULL);
- assert(_PyInterpreterState_IsRunningMain(interp));
- _PyInterpreterState_FailIfRunningMain(interp);
+ // In 3.14+ we use _PyErr_SetInterpreterAlreadyRunning().
+ PyErr_SetString(PyExc_InterpreterError, "interpreter already running");
break;
case _PyXI_ERR_MAIN_NS_FAILURE:
PyErr_SetString(PyExc_InterpreterError,
diff --git a/Python/pystate.c b/Python/pystate.c
index ad3fdce69bf1d5..960895e5badc27 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -1053,7 +1053,9 @@ get_main_thread(PyInterpreterState *interp)
int
_PyInterpreterState_SetRunningMain(PyInterpreterState *interp)
{
- if (_PyInterpreterState_FailIfRunningMain(interp) < 0) {
+ if (get_main_thread(interp) != NULL) {
+ // In 3.14+ we use _PyErr_SetInterpreterAlreadyRunning().
+ PyErr_SetString(PyExc_InterpreterError, "interpreter already running");
return -1;
}
PyThreadState *tstate = current_fast_get();
@@ -1099,6 +1101,7 @@ _PyThreadState_IsRunningMain(PyThreadState *tstate)
return get_main_thread(interp) == tstate;
}
+// This has been removed in 3.14.
int
_PyInterpreterState_FailIfRunningMain(PyInterpreterState *interp)
{
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]