From 5a6fda3b0842d10576a00781f4dccebf7b025f7a Mon Sep 17 00:00:00 2001 From: Gabor Melis Date: Thu, 4 Aug 2005 09:06:25 +0000 Subject: [PATCH] 0.9.3.25 * bug fix: release-foreground doesn't choke on session lock if there is only one thread in the session --- BUGS | 7 ------- NEWS | 3 +++ src/code/target-thread.lisp | 7 ++++--- version.lisp-expr | 2 +- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/BUGS b/BUGS index ffaacfa..07d236b 100644 --- a/BUGS +++ b/BUGS @@ -1074,13 +1074,6 @@ WORKAROUND: around the same time regarding a call to LIST on sparc with 1000 arguments) and other implementation limit constants. -311: "Tokeniser not thread-safe" - (see also Robert Marlow sbcl-help "Multi threaded read chucking a - spak" 2004-04-19) - The tokenizer's use of *read-buffer* and *read-buffer-length* causes - spurious errors should two threads attempt to tokenise at the same - time. - 314: "LOOP :INITIALLY clauses and scope of initializers" reported by Bruno Haible sbcl-devel "various SBCL bugs" from CLISP test suite, originally by Thomas F. Burdick. diff --git a/NEWS b/NEWS index d59fb7f..a69682a 100644 --- a/NEWS +++ b/NEWS @@ -17,6 +17,9 @@ changes in sbcl-0.9.4 relative to sbcl-0.9.3: * bug fix: degree sign () could not be encoded in KOI8-R. * bug fix: correct pathname printing with printer escaping is on. (thanks to Kevin Reid) + * threads + ** bug fix: release-foreground doesn't choke on session lock if + there is only one thread in the session changes in sbcl-0.9.3 relative to sbcl-0.9.2: * New feature: Experimental support for bivalent streams: streams diff --git a/src/code/target-thread.lisp b/src/code/target-thread.lisp index 81e7130..b859ea7 100644 --- a/src/code/target-thread.lisp +++ b/src/code/target-thread.lisp @@ -418,13 +418,14 @@ interactive." (defun release-foreground (&optional next) #!+sb-doc "Background this thread. If NEXT is supplied, arrange for it to -have the foreground next" +have the foreground next." #!-sb-thread (declare (ignore next)) #!-sb-thread nil #!+sb-thread (with-session-lock (*session*) - (setf (session-interactive-threads *session*) - (delete *current-thread* (session-interactive-threads *session*))) + (when (rest (session-interactive-threads *session*)) + (setf (session-interactive-threads *session*) + (delete *current-thread* (session-interactive-threads *session*)))) (when next (setf (session-interactive-threads *session*) (list* next diff --git a/version.lisp-expr b/version.lisp-expr index a7e311f..3e81dbb 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.9.3.24" +"0.9.3.25" -- 1.7.10.4