Change PyEval_SaveThread() and PyEval_RestoreThread() to always do the

tstate swapping.  Only the acquiring and releasing of the lock is
conditional (twice, under ``#ifdef WITH_THREAD'' and inside ``if
(interpreter_lock)'').
This commit is contained in:
Guido van Rossum 1997-09-30 22:03:16 +00:00
parent b4102bf5f8
commit b74eca9349
1 changed files with 9 additions and 12 deletions

View File

@ -171,33 +171,30 @@ PyEval_ReleaseThread(tstate)
PyThreadState *
PyEval_SaveThread()
{
PyThreadState *tstate = PyThreadState_Swap(NULL);
if (tstate == NULL)
Py_FatalError("PyEval_SaveThread: NULL tstate");
#ifdef WITH_THREAD
if (interpreter_lock) {
PyThreadState *tstate = PyThreadState_Swap(NULL);
if (tstate == NULL)
Py_FatalError("PyEval_SaveThread: NULL tstate");
if (interpreter_lock)
release_lock(interpreter_lock);
return tstate;
}
#endif
return NULL;
return tstate;
}
void
PyEval_RestoreThread(tstate)
PyThreadState *tstate;
{
if (tstate == NULL)
Py_FatalError("PyEval_RestoreThread: NULL tstate");
#ifdef WITH_THREAD
if (interpreter_lock) {
int err;
err = errno;
if (tstate == NULL)
Py_FatalError("PyEval_RestoreThread: NULL tstate");
int err = errno;
acquire_lock(interpreter_lock, 1);
PyThreadState_Swap(tstate);
errno = err;
}
#endif
PyThreadState_Swap(tstate);
}