diff --git a/Misc/NEWS b/Misc/NEWS index 1feda610a34..fe9532ac135 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -19,6 +19,9 @@ What's New in Python 2.5 release candidate 2? Core and builtins ----------------- +- Make _PyGILState_NoteThreadState() static, it was not used anywhere + outside of pystate.c and should not be necessary. + - Bug #1551432: Exceptions do not define an explicit __unicode__ method. This allows calling unicode() on exceptions classes directly to succeed. diff --git a/Python/pystate.c b/Python/pystate.c index f591a597672..639278f6902 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -309,9 +309,14 @@ PyThreadState_Swap(PyThreadState *newts) */ #if defined(Py_DEBUG) && defined(WITH_THREAD) if (newts) { + /* This can be called from PyEval_RestoreThread(). Similar + to it, we need to ensure errno doesn't change. + */ + int err = errno; PyThreadState *check = PyGILState_GetThisThreadState(); if (check && check->interp == newts->interp && check != newts) Py_FatalError("Invalid thread state for this thread"); + errno = err; } #endif return oldts; @@ -504,7 +509,7 @@ _PyGILState_Fini(void) it so it doesn't try to create another thread state for the thread (this is a better fix for SF bug #1010677 than the first one attempted). */ -void +static void _PyGILState_NoteThreadState(PyThreadState* tstate) { /* If autoTLSkey is 0, this must be the very first threadstate created