Skip to content

Commit

Permalink
[3.13] pythongh-126986: Stop Using _PyInterpreterState_FailIfNotRunni…
Browse files Browse the repository at this point in the history
…ng() (pythongh-127112)

This is a pseudo-backport of d6b3e78 (pythongh-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.
  • Loading branch information
ericsnowcurrently authored Nov 21, 2024
1 parent c743314 commit 8cdd636
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 3 deletions.
4 changes: 2 additions & 2 deletions Python/crossinterp.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
5 changes: 4 additions & 1 deletion Python/pystate.c
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down Expand Up @@ -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)
{
Expand Down

0 comments on commit 8cdd636

Please sign in to comment.