From d8e0a653d6974279581a3d1a151bde02ea6023c9 Mon Sep 17 00:00:00 2001 From: Nikodemus Siivola Date: Tue, 19 Oct 2010 17:15:48 +0000 Subject: [PATCH] 1.0.43.77: missing FINALIZE :DONT-SAVE T arguments in contribs Affects SB-BSD-SOCKETS and SB-SIMPLE-STREAMS. Fix a typo in NEWS. --- NEWS | 5 ++++- contrib/sb-bsd-sockets/sockets.lisp | 6 ++++-- contrib/sb-simple-streams/file.lisp | 6 ++++-- contrib/sb-simple-streams/socket.lisp | 3 ++- version.lisp-expr | 2 +- 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/NEWS b/NEWS index 8b642ed..9febed1 100644 --- a/NEWS +++ b/NEWS @@ -35,7 +35,7 @@ changes relative to sbcl-1.0.43: (AND VECTOR (NOT SIMPLE-ARRAY)) when appropriate. (lp#309130) * bug fix: (THE (VALUES ...)) in LOAD-TIME-VALUE caused a compiler-error. (lp#646796) - * bug fix: interrupts arriving due to CL:OPEN caused an error. + * bug fix: interrupts arriving during CL:OPEN caused an error. * bug fix: overeager character buffering could cause input to block spuriously when reading from a pipe (lp#643686) * bug fix: more efficient timer expiry should avoid starvation on systems @@ -84,6 +84,9 @@ changes relative to sbcl-1.0.43: * bug fix: SB-POSIX:FORK now signals an error if an attempt to fork with multiple Lisp threads running is made on every platform, not just Darwin. (lp#451111) + * bug fix: SB-BSD-SOCKETS and SB-SIMPLE-STREAMS could leave stale finalizers + around when core was saved, which could cause undefined behaviour when the + core was reified. changes in sbcl-1.0.43 relative to sbcl-1.0.42: * incompatible change: FD-STREAMS no longer participate in the serve-event diff --git a/contrib/sb-bsd-sockets/sockets.lisp b/contrib/sb-bsd-sockets/sockets.lisp index 886dd6e..66f57a1 100644 --- a/contrib/sb-bsd-sockets/sockets.lisp +++ b/contrib/sb-bsd-sockets/sockets.lisp @@ -59,7 +59,8 @@ directly instantiated."))) (setf (slot-value socket 'file-descriptor) fd (slot-value socket 'protocol) proto-num (slot-value socket 'type) type) - (sb-ext:finalize socket (lambda () (sockint::close fd))))) + (sb-ext:finalize socket (lambda () (sockint::close fd)) + :dont-save t))) @@ -117,7 +118,8 @@ values")) :type (socket-type socket) :protocol (socket-protocol socket) :descriptor fd))) - (sb-ext:finalize s (lambda () (sockint::close fd)))) + (sb-ext:finalize s (lambda () (sockint::close fd)) + :dont-save t)) (multiple-value-list (bits-of-sockaddr socket sockaddr)))))))) (defgeneric socket-connect (socket &rest address) diff --git a/contrib/sb-simple-streams/file.lisp b/contrib/sb-simple-streams/file.lisp index 4cfacd4..01da23b 100644 --- a/contrib/sb-simple-streams/file.lisp +++ b/contrib/sb-simple-streams/file.lisp @@ -80,7 +80,8 @@ (format *terminal-io* "~&;;; ** closed ~S (fd ~D)~%" namestring fd) (when original - (revert-file namestring original)))) + (revert-file namestring original))) + :dont-save t) stream))))))) (defmethod device-open ((stream file-simple-stream) options) @@ -244,7 +245,8 @@ (sb-ext:finalize stream (lambda () (sb-posix:munmap buffer size) - (format *terminal-io* "~&;;; ** unmapped ~S" buffer)))))) + (format *terminal-io* "~&;;; ** unmapped ~S" buffer)) + :dont-save t)))) stream))) diff --git a/contrib/sb-simple-streams/socket.lisp b/contrib/sb-simple-streams/socket.lisp index 120f375..65357ac 100644 --- a/contrib/sb-simple-streams/socket.lisp +++ b/contrib/sb-simple-streams/socket.lisp @@ -76,7 +76,8 @@ (lambda () (sb-unix:unix-close fd) (format *debug-io* - "~&;;; ** closed socket (fd ~D)~%" fd))) + "~&;;; ** closed socket (fd ~D)~%" fd)) + :dont-save t) ;; this should be done with (setf stream-external-format) (let ((efmt (getf options :external-format :default))) (compose-encapsulating-streams stream efmt) diff --git a/version.lisp-expr b/version.lisp-expr index 832c68e..e8dc735 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".) -"1.0.43.76" +"1.0.43.77" -- 1.7.10.4