diff options
author | Victor Stinner <vstinner@redhat.com> | 2019-03-19 13:19:38 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-19 13:19:38 (GMT) |
commit | a712679a2bffffefaacdc05f788d6ea50f72a561 (patch) | |
tree | 0817aa4a7817a52e2aa6b9876d61bdcc3a7742e8 /Python | |
parent | 29198ea1c6d58f87389136b0ac0b8b2318dbac24 (diff) | |
download | cpython-a712679a2bffffefaacdc05f788d6ea50f72a561.zip cpython-a712679a2bffffefaacdc05f788d6ea50f72a561.tar.gz cpython-a712679a2bffffefaacdc05f788d6ea50f72a561.tar.bz2 |
bpo-36333, bpo-36356: Fix _PyEval_FiniThreads() (GH-12432)
_PyEval_FiniThreads() now free the pending lock.
Diffstat (limited to 'Python')
-rw-r--r-- | Python/ceval.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/Python/ceval.c b/Python/ceval.c index d6a0b33..40320bf 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -169,8 +169,10 @@ PyEval_ThreadsInitialized(void) void PyEval_InitThreads(void) { - if (gil_created()) + if (gil_created()) { return; + } + PyThread_init_thread(); create_gil(); take_gil(_PyThreadState_GET()); @@ -184,10 +186,17 @@ PyEval_InitThreads(void) void _PyEval_FiniThreads(void) { - if (!gil_created()) + if (!gil_created()) { return; + } + destroy_gil(); assert(!gil_created()); + + if (_PyRuntime.ceval.pending.lock != NULL) { + PyThread_free_lock(_PyRuntime.ceval.pending.lock); + _PyRuntime.ceval.pending.lock = NULL; + } } void |