summaryrefslogtreecommitdiffstats
path: root/Modules/_xxsubinterpretersmodule.c
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2020-03-25 18:52:02 (GMT)
committerGitHub <noreply@github.com>2020-03-25 18:52:02 (GMT)
commit3072338642156a5edfa2deef2557288fff73c22a (patch)
treec29ba9ddba31386c699a6e7a7417287e519a3158 /Modules/_xxsubinterpretersmodule.c
parent89a2209ae6fc5f39868621799730e16f931eb497 (diff)
downloadcpython-3072338642156a5edfa2deef2557288fff73c22a.zip
cpython-3072338642156a5edfa2deef2557288fff73c22a.tar.gz
cpython-3072338642156a5edfa2deef2557288fff73c22a.tar.bz2
bpo-39947: Use PyThreadState_GetFrame() (GH-19159)
_tracemalloc.c and _xxsubinterpretersmodule.c use PyThreadState_GetFrame() and PyThreadState_GetInterpreter() to no longer depend on the PyThreadState structure.
Diffstat (limited to 'Modules/_xxsubinterpretersmodule.c')
-rw-r--r--Modules/_xxsubinterpretersmodule.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/Modules/_xxsubinterpretersmodule.c b/Modules/_xxsubinterpretersmodule.c
index 526115a..b3616ae 100644
--- a/Modules/_xxsubinterpretersmodule.c
+++ b/Modules/_xxsubinterpretersmodule.c
@@ -1830,7 +1830,7 @@ _is_running(PyInterpreterState *interp)
"interpreter has more than one thread");
return -1;
}
- PyFrameObject *frame = tstate->frame;
+ PyFrameObject *frame = PyThreadState_GetFrame(tstate);
if (frame == NULL) {
if (PyErr_Occurred() != NULL) {
return -1;
@@ -2004,7 +2004,8 @@ interp_create(PyObject *self, PyObject *args)
PyErr_SetString(PyExc_RuntimeError, "interpreter creation failed");
return NULL;
}
- PyObject *idobj = _PyInterpreterState_GetIDObject(tstate->interp);
+ PyInterpreterState *interp = PyThreadState_GetInterpreter(tstate);
+ PyObject *idobj = _PyInterpreterState_GetIDObject(interp);
if (idobj == NULL) {
// XXX Possible GILState issues?
save_tstate = PyThreadState_Swap(tstate);
@@ -2012,7 +2013,7 @@ interp_create(PyObject *self, PyObject *args)
PyThreadState_Swap(save_tstate);
return NULL;
}
- _PyInterpreterState_RequireIDRef(tstate->interp, 1);
+ _PyInterpreterState_RequireIDRef(interp, 1);
return idobj;
}