1.0.43.77: missing FINALIZE :DONT-SAVE T arguments in contribs
authorNikodemus Siivola <nikodemus@random-state.net>
Tue, 19 Oct 2010 17:15:48 +0000 (17:15 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Tue, 19 Oct 2010 17:15:48 +0000 (17:15 +0000)
 Affects SB-BSD-SOCKETS and SB-SIMPLE-STREAMS.

 Fix a typo in NEWS.

NEWS
contrib/sb-bsd-sockets/sockets.lisp
contrib/sb-simple-streams/file.lisp
contrib/sb-simple-streams/socket.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index 8b642ed..9febed1 100644 (file)
--- 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
index 886dd6e..66f57a1 100644 (file)
@@ -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)))
 
 \f
 
@@ -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)
index 4cfacd4..01da23b 100644 (file)
@@ -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)
             (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)))
 
 
index 120f375..65357ac 100644 (file)
@@ -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)
index 832c68e..e8dc735 100644 (file)
@@ -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"