]> granicus.if.org Git - python/commitdiff
Forward-port of rev. 51857:
authorGeorg Brandl <georg@python.org>
Mon, 11 Sep 2006 09:38:35 +0000 (09:38 +0000)
committerGeorg Brandl <georg@python.org>
Mon, 11 Sep 2006 09:38:35 +0000 (09:38 +0000)
Building with HP's cc on HP-UX turned up a couple of problems.
_PyGILState_NoteThreadState was declared as static inconsistently.
Make it static as it's not necessary outside of this module.

Some tests failed because errno was reset to 0. (I think the tests
that failed were at least: test_fcntl and test_mailbox).
Ensure that errno doesn't change after a call to Py_END_ALLOW_THREADS.
This only affected debug builds.

Misc/NEWS
Python/pystate.c

index 6f12bce94bf48453aabb800409cd9a0ae6a43f1b..285e8a4461b683c2f691449bec38f2b4a8a22b84 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@ What's New in Python 2.6 alpha 1?
 Core and builtins
 -----------------
 
+- Make _PyGILState_NoteThreadState() static, it was not used anywhere
+  outside of pystate.c and should not be necessary.
+
 - Bug #1542051: Exceptions now correctly call PyObject_GC_UnTrack.
   Also make sure that every exception class has __module__ set to
   'exceptions'.
index f591a597672f19f19a41831eb92e3d89de8bc4d0..639278f69020eccff59852e5aab1ca2ea88a2d69 100644 (file)
@@ -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