summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
Diffstat (limited to 'Python')
-rw-r--r--Python/pystate.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/Python/pystate.c b/Python/pystate.c
index 40699af..3b4c6a2 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -592,9 +592,9 @@ _PyGILState_Fini(void)
autoInterpreterState = NULL;
}
-/* Reset the TLS key - called by PyOS_AfterFork.
+/* Reset the TLS key - called by PyOS_AfterFork().
* This should not be necessary, but some - buggy - pthread implementations
- * don't flush TLS on fork, see issue #10517.
+ * don't reset TLS upon fork(), see issue #10517.
*/
void
_PyGILState_Reinit(void)
@@ -604,8 +604,9 @@ _PyGILState_Reinit(void)
if ((autoTLSkey = PyThread_create_key()) == -1)
Py_FatalError("Could not allocate TLS entry");
- /* re-associate the current thread state with the new key */
- if (PyThread_set_key_value(autoTLSkey, (void *)tstate) < 0)
+ /* If the thread had an associated auto thread state, reassociate it with
+ * the new key. */
+ if (tstate && PyThread_set_key_value(autoTLSkey, (void *)tstate) < 0)
Py_FatalError("Couldn't create autoTLSkey mapping");
}