From: Michael W. Hudson Date: Mon, 18 Apr 2005 08:46:17 +0000 (+0000) Subject: Fix: X-Git-Tag: v2.5a0~1813 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=774479c68bf6953e89996c24287199d3f3331ba3;p=python Fix: [ 1176893 ] Readline segfault by unsilly-ing PyGILState_Release(). Backport candidate. --- diff --git a/Misc/NEWS b/Misc/NEWS index f1551b12d8..ec30734f30 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 255cf7e86e..abca8ddfdf 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 */