mirror of
https://github.com/python/cpython.git
synced 2025-07-23 11:15:24 +00:00
_PyGILState_Init(), PyGILState_Ensure(): Since PyThread_set_key_value()
can fail, check its return value, and die if it does fail. _PyGILState_Init(): Assert that the thread doesn't already have an association for autoTLSkey. If it does, PyThread_set_key_value() will ignore the attempt to (re)set the association, which the code clearly doesn't want.
This commit is contained in:
parent
fda787fcec
commit
f9becec8cd
1 changed files with 5 additions and 2 deletions
|
@ -395,7 +395,9 @@ _PyGILState_Init(PyInterpreterState *i, PyThreadState *t)
|
||||||
autoTLSkey = PyThread_create_key();
|
autoTLSkey = PyThread_create_key();
|
||||||
autoInterpreterState = i;
|
autoInterpreterState = i;
|
||||||
/* Now stash the thread state for this thread in TLS */
|
/* Now stash the thread state for this thread in TLS */
|
||||||
PyThread_set_key_value(autoTLSkey, (void *)t);
|
assert(PyThread_get_key_value(autoTLSkey) == NULL);
|
||||||
|
if (PyThread_set_key_value(autoTLSkey, (void *)t) < 0)
|
||||||
|
Py_FatalError("Couldn't create autoTLSkey mapping");
|
||||||
assert(t->gilstate_counter == 0); /* must be a new thread state */
|
assert(t->gilstate_counter == 0); /* must be a new thread state */
|
||||||
t->gilstate_counter = 1;
|
t->gilstate_counter = 1;
|
||||||
}
|
}
|
||||||
|
@ -434,7 +436,8 @@ PyGILState_Ensure(void)
|
||||||
tcur = PyThreadState_New(autoInterpreterState);
|
tcur = PyThreadState_New(autoInterpreterState);
|
||||||
if (tcur == NULL)
|
if (tcur == NULL)
|
||||||
Py_FatalError("Couldn't create thread-state for new thread");
|
Py_FatalError("Couldn't create thread-state for new thread");
|
||||||
PyThread_set_key_value(autoTLSkey, (void *)tcur);
|
if (PyThread_set_key_value(autoTLSkey, (void *)tcur) < 0)
|
||||||
|
Py_FatalError("Couldn't create autoTLSkey mapping");
|
||||||
current = 0; /* new thread state is never current */
|
current = 0; /* new thread state is never current */
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue