Commit b74eca93 authored by Guido van Rossum's avatar Guido van Rossum

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)'').
parent b4102bf5
...@@ -171,33 +171,30 @@ PyEval_ReleaseThread(tstate) ...@@ -171,33 +171,30 @@ PyEval_ReleaseThread(tstate)
PyThreadState * PyThreadState *
PyEval_SaveThread() PyEval_SaveThread()
{ {
PyThreadState *tstate = PyThreadState_Swap(NULL);
if (tstate == NULL)
Py_FatalError("PyEval_SaveThread: NULL tstate");
#ifdef WITH_THREAD #ifdef WITH_THREAD
if (interpreter_lock) { if (interpreter_lock)
PyThreadState *tstate = PyThreadState_Swap(NULL);
if (tstate == NULL)
Py_FatalError("PyEval_SaveThread: NULL tstate");
release_lock(interpreter_lock); release_lock(interpreter_lock);
return tstate;
}
#endif #endif
return NULL; return tstate;
} }
void void
PyEval_RestoreThread(tstate) PyEval_RestoreThread(tstate)
PyThreadState *tstate; PyThreadState *tstate;
{ {
if (tstate == NULL)
Py_FatalError("PyEval_RestoreThread: NULL tstate");
#ifdef WITH_THREAD #ifdef WITH_THREAD
if (interpreter_lock) { if (interpreter_lock) {
int err; int err = errno;
err = errno;
if (tstate == NULL)
Py_FatalError("PyEval_RestoreThread: NULL tstate");
acquire_lock(interpreter_lock, 1); acquire_lock(interpreter_lock, 1);
PyThreadState_Swap(tstate);
errno = err; errno = err;
} }
#endif #endif
PyThreadState_Swap(tstate);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment