summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael W. Hudson <mwh@python.net>2005-04-18 08:46:17 (GMT)
committerMichael W. Hudson <mwh@python.net>2005-04-18 08:46:17 (GMT)
commit774479c68bf6953e89996c24287199d3f3331ba3 (patch)
tree064874935cc0f155b9f9acf6fca76de0e3177a04
parent6d22b56b7e92815bac598ecda645bfd15d6dd6b8 (diff)
downloadcpython-774479c68bf6953e89996c24287199d3f3331ba3.zip
cpython-774479c68bf6953e89996c24287199d3f3331ba3.tar.gz
cpython-774479c68bf6953e89996c24287199d3f3331ba3.tar.bz2
Fix:
[ 1176893 ] Readline segfault by unsilly-ing PyGILState_Release(). Backport candidate.
-rw-r--r--Misc/NEWS6
-rw-r--r--Python/pystate.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index f1551b1..ec30734 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,12 @@ What's New in Python 2.5 alpha 1?
Core and builtins
-----------------
+- It is now safe to call PyGILState_Release() before
+ PyEval_InitThreads() (note that if there is reason to believe there
+ are multiple threads around you still must call PyEval_InitThreads()
+ before using the Python API; this fix is for extension modules that
+ have no way of knowing if Python is multi-threaded yet).
+
- Typing Ctrl-C whilst raw_input() was waiting in a build with threads
disabled caused a crash.
diff --git a/Python/pystate.c b/Python/pystate.c
index 255cf7e..abca8dd 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -503,6 +503,6 @@ PyGILState_Release(PyGILState_STATE oldstate)
}
/* Release the lock if necessary */
else if (oldstate == PyGILState_UNLOCKED)
- PyEval_ReleaseThread(tcur);
+ PyEval_SaveThread();
}
#endif /* WITH_THREAD */