diff options
-rw-r--r-- | Misc/NEWS | 6 | ||||
-rw-r--r-- | Python/pystate.c | 4 |
2 files changed, 10 insertions, 0 deletions
@@ -230,6 +230,12 @@ Core and builtins unicode instance if the argument is not an instance of basestring and calling __str__ on the argument returns a unicode instance. +- Patch #1413181: changed ``PyThreadState_Delete()`` to forget about the + current thread state when the auto-GIL-state machinery knows about + it (since the thread state is being deleted, continuing to remember it + can't help, but can hurt if another thread happens to get created with + the same thread id). + Extension Modules ----------------- diff --git a/Python/pystate.c b/Python/pystate.c index 6584cda..867334e 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -262,6 +262,10 @@ PyThreadState_Delete(PyThreadState *tstate) if (tstate == _PyThreadState_Current) Py_FatalError("PyThreadState_Delete: tstate is still current"); tstate_delete_common(tstate); +#ifdef WITH_THREAD + if (autoTLSkey && PyThread_get_key_value(autoTLSkey) == tstate) + PyThread_delete_key_value(autoTLSkey); +#endif /* WITH_THREAD */ } |