From: Guido van Rossum Date: Tue, 8 Feb 2005 15:01:35 +0000 (+0000) Subject: Backport 2.39: X-Git-Tag: v2.4.1c1~52 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1a37c4c6b10000e3f7685add1747bb1629908ed7;p=thirdparty%2FPython%2Fcpython.git Backport 2.39: Close the discussion in SF bug 1069160. --- diff --git a/Python/pystate.c b/Python/pystate.c index 182560748fe4..255cf7e86e82 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -320,7 +320,7 @@ PyThreadState_GetDict(void) /* Asynchronously raise an exception in a thread. Requested by Just van Rossum and Alex Martelli. - To prevent naive misuse, you must write your own exception + To prevent naive misuse, you must write your own extension to call this. Must be called with the GIL held. Returns the number of tstates modified; if it returns a number greater than one, you're in trouble, and you should call it again @@ -332,6 +332,7 @@ PyThreadState_SetAsyncExc(long id, PyObject *exc) { PyInterpreterState *interp = tstate->interp; PyThreadState *p; int count = 0; + HEAD_LOCK(); for (p = interp->tstate_head; p != NULL; p = p->next) { if (p->thread_id != id) continue; @@ -340,6 +341,7 @@ PyThreadState_SetAsyncExc(long id, PyObject *exc) { p->async_exc = exc; count += 1; } + HEAD_UNLOCK(); return count; }