diff --git a/Python/ceval.c b/Python/ceval.c index d8c9a05f28e..dd7faf945ce 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -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); }