summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2019-05-24 15:01:38 (GMT)
committerGitHub <noreply@github.com>2019-05-24 15:01:38 (GMT)
commit438a12dd9d85f463c0bb7bf1505cd87b98b98170 (patch)
tree98c86409bb8fdfca0c58588f2b9475d25579057e /Modules
parent13d4e6a4a090031f8214e058ed3c8fd47767e05f (diff)
downloadcpython-438a12dd9d85f463c0bb7bf1505cd87b98b98170.zip
cpython-438a12dd9d85f463c0bb7bf1505cd87b98b98170.tar.gz
cpython-438a12dd9d85f463c0bb7bf1505cd87b98b98170.tar.bz2
bpo-36710: Add tstate parameter in ceval.c (GH-13547)
* Fix a possible reference leak in _PyErr_Print() if exception is NULL. * PyErr_BadInternalCall(): replace PyErr_Format() with _PyErr_SetString(). * Add pycore_pyerrors.h header file. * New functions: * _PyErr_Clear() * _PyErr_Fetch() * _PyErr_Print() * _PyErr_Restore() * _PyErr_SetObject() * _PyErr_SetString() * Add 'tstate' parameter to _PyEval_AddPendingCall().
Diffstat (limited to 'Modules')
-rw-r--r--Modules/signalmodule.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index ed3852d..7698984 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -258,6 +258,7 @@ trip_signal(int sig_num)
/* Notify ceval.c */
_PyRuntimeState *runtime = &_PyRuntime;
+ PyThreadState *tstate = _PyRuntimeState_GetThreadState(runtime);
_PyEval_SignalReceived(&runtime->ceval);
/* And then write to the wakeup fd *after* setting all the globals and
@@ -298,7 +299,7 @@ trip_signal(int sig_num)
{
/* Py_AddPendingCall() isn't signal-safe, but we
still use it for this exceptional case. */
- _PyEval_AddPendingCall(&runtime->ceval,
+ _PyEval_AddPendingCall(tstate, &runtime->ceval,
report_wakeup_send_error,
(void *)(intptr_t) last_error);
}
@@ -317,7 +318,7 @@ trip_signal(int sig_num)
{
/* Py_AddPendingCall() isn't signal-safe, but we
still use it for this exceptional case. */
- _PyEval_AddPendingCall(&runtime->ceval,
+ _PyEval_AddPendingCall(tstate, &runtime->ceval,
report_wakeup_write_error,
(void *)(intptr_t)errno);
}