summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2022-03-21 02:03:22 (GMT)
committerGitHub <noreply@github.com>2022-03-21 02:03:22 (GMT)
commite63894b3eed8ad2dd7690695f7f07bfbff59c05a (patch)
tree9f94d5ec7bce674f6be5384fa5933f4fae1221c5
parent9087243e2c167e38570e819b228efc3492c38c9c (diff)
downloadcpython-e63894b3eed8ad2dd7690695f7f07bfbff59c05a.zip
cpython-e63894b3eed8ad2dd7690695f7f07bfbff59c05a.tar.gz
cpython-e63894b3eed8ad2dd7690695f7f07bfbff59c05a.tar.bz2
bpo-46850: Remove _PyEval_CallTracing() function (GH-32019)
Remove the private undocumented function _PyEval_CallTracing() from the C API. Call the public sys.call_tracing() function instead.
-rw-r--r--Include/cpython/ceval.h2
-rw-r--r--Include/internal/pycore_ceval.h3
-rw-r--r--Misc/NEWS.d/next/C API/2022-03-21-02-26-27.bpo-46850.hU3c-O.rst3
-rw-r--r--Python/ceval.c11
4 files changed, 13 insertions, 6 deletions
diff --git a/Include/cpython/ceval.h b/Include/cpython/ceval.h
index e0a6887..9d4eeaf 100644
--- a/Include/cpython/ceval.h
+++ b/Include/cpython/ceval.h
@@ -2,8 +2,6 @@
# error "this header file must not be included directly"
#endif
-PyAPI_FUNC(PyObject *) _PyEval_CallTracing(PyObject *func, PyObject *args);
-
PyAPI_FUNC(void) PyEval_SetProfile(Py_tracefunc, PyObject *);
PyAPI_DATA(int) _PyEval_SetProfile(PyThreadState *tstate, Py_tracefunc func, PyObject *arg);
PyAPI_FUNC(void) PyEval_SetTrace(Py_tracefunc, PyObject *);
diff --git a/Include/internal/pycore_ceval.h b/Include/internal/pycore_ceval.h
index 59a3453..45d26a3 100644
--- a/Include/internal/pycore_ceval.h
+++ b/Include/internal/pycore_ceval.h
@@ -34,6 +34,9 @@ PyAPI_FUNC(void) _PyEval_SignalAsyncExc(PyInterpreterState *interp);
extern PyStatus _PyEval_ReInitThreads(PyThreadState *tstate);
#endif
+// Used by sys.call_tracing()
+extern PyObject* _PyEval_CallTracing(PyObject *func, PyObject *args);
+
// Used by sys.get_asyncgen_hooks()
extern PyObject* _PyEval_GetAsyncGenFirstiter(void);
extern PyObject* _PyEval_GetAsyncGenFinalizer(void);
diff --git a/Misc/NEWS.d/next/C API/2022-03-21-02-26-27.bpo-46850.hU3c-O.rst b/Misc/NEWS.d/next/C API/2022-03-21-02-26-27.bpo-46850.hU3c-O.rst
new file mode 100644
index 0000000..f600ea8
--- /dev/null
+++ b/Misc/NEWS.d/next/C API/2022-03-21-02-26-27.bpo-46850.hU3c-O.rst
@@ -0,0 +1,3 @@
+Remove the private undocumented function ``_PyEval_CallTracing()`` from the
+C API. Call the public :func:`sys.call_tracing` function instead. Patch by
+Victor Stinner.
diff --git a/Python/ceval.c b/Python/ceval.c
index 04f2dde..6f449e3 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -6708,16 +6708,19 @@ call_trace(Py_tracefunc func, PyObject *obj,
return result;
}
-PyObject *
+PyObject*
_PyEval_CallTracing(PyObject *func, PyObject *args)
{
+ // Save and disable tracing
PyThreadState *tstate = _PyThreadState_GET();
int save_tracing = tstate->tracing;
int save_use_tracing = tstate->cframe->use_tracing;
- PyObject *result;
-
tstate->tracing = 0;
- result = PyObject_Call(func, args, NULL);
+
+ // Call the tracing function
+ PyObject *result = PyObject_Call(func, args, NULL);
+
+ // Restore tracing
tstate->tracing = save_tracing;
tstate->cframe->use_tracing = save_use_tracing;
return result;