0.8.7.41:
authorChristophe Rhodes <csr21@cam.ac.uk>
Wed, 4 Feb 2004 14:07:52 +0000 (14:07 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Wed, 4 Feb 2004 14:07:52 +0000 (14:07 +0000)
Make {IN,OUT}PUT-STREAM-P work on synonym streams
... looks like pvaneynd's HIGH-SECURITY is in fact necessary
... delete workarounds for this through the rest of the stream
code while I'm at it.

NEWS
src/code/stream.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index 45facf6..2061986 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2294,6 +2294,8 @@ changes in sbcl-0.8.8 relative to sbcl-0.8.7:
        signal a TYPE-ERROR if their argument is not a stream.
     ** READ-BYTE and WRITE-BYTE signal a TYPE-ERROR if their stream
        designator argument does not designate a stream.
+    ** OPEN-STREAM-P and INPUT-STREAM-P on synonym streams work by examining 
+       the synonym.
 
 planned incompatible changes in 0.8.x:
   * (not done yet, but planned:) When the profiling interface settles
index 63b3fa3..931b653 100644 (file)
@@ -63,7 +63,6 @@
 (defun ansi-stream-input-stream-p (stream)
   (declare (type ansi-stream stream))
 
-  #!+high-security
   (when (synonym-stream-p stream)
     (setf stream
          (symbol-value (synonym-stream-symbol stream))))
@@ -85,7 +84,6 @@
 (defun ansi-stream-output-stream-p (stream)
   (declare (type ansi-stream stream))
 
-  #!+high-security
   (when (synonym-stream-p stream)
     (setf stream (symbol-value
                  (synonym-stream-symbol stream))))
 (declaim (inline ansi-stream-open-stream-p))
 (defun ansi-stream-open-stream-p (stream)
   (declare (type ansi-stream stream))
+  ;; CLHS 22.1.4 lets us not worry about synonym streams here.
   (not (eq (ansi-stream-in stream) #'closed-flame)))
 
 (defun open-stream-p (stream)
 
 (defun make-broadcast-stream (&rest streams)
   (dolist (stream streams)
-    (unless (or (and (synonym-stream-p stream)
-                    (output-stream-p (symbol-value
-                                      (synonym-stream-symbol stream))))
-               (output-stream-p stream))
+    (unless (output-stream-p stream)
       (error 'type-error
             :datum stream
             :expected-type '(satisfies output-stream-p))))
   ;; FIXME: This idiom of the-real-stream-of-a-possibly-synonym-stream
   ;; should be encapsulated in a function, and used here and most of
   ;; the other places that SYNONYM-STREAM-P appears.
-  (unless (or (and (synonym-stream-p output-stream)
-                  (output-stream-p (symbol-value
-                                    (synonym-stream-symbol output-stream))))
-             (output-stream-p output-stream))
+  (unless (output-stream-p output-stream)
     (error 'type-error
           :datum output-stream
           :expected-type '(satisfies output-stream-p)))
-  (unless (or (and (synonym-stream-p input-stream)
-                  (input-stream-p (symbol-value
-                                   (synonym-stream-symbol input-stream))))
-             (input-stream-p input-stream))
+  (unless (input-stream-p input-stream)
     (error 'type-error
           :datum input-stream
           :expected-type '(satisfies input-stream-p)))
   "Return a stream which takes its input from each of the streams in turn,
    going on to the next at EOF."
   (dolist (stream streams)
-    (unless (or (and (synonym-stream-p stream)
-                    (input-stream-p (symbol-value
-                                     (synonym-stream-symbol stream))))
-               (input-stream-p stream))
+    (unless (input-stream-p stream)
       (error 'type-error
             :datum stream
             :expected-type '(satisfies input-stream-p))))
   "Return a bidirectional stream which gets its input from INPUT-STREAM and
    sends its output to OUTPUT-STREAM. In addition, all input is echoed to
    the output stream."
-  (unless (or (and (synonym-stream-p output-stream)
-                  (output-stream-p (symbol-value
-                                    (synonym-stream-symbol output-stream))))
-             (output-stream-p output-stream))
+  (unless (output-stream-p output-stream)
     (error 'type-error
           :datum output-stream
           :expected-type '(satisfies output-stream-p)))
-  (unless (or (and (synonym-stream-p input-stream)
-                  (input-stream-p (symbol-value
-                                   (synonym-stream-symbol input-stream))))
-             (input-stream-p input-stream))
+  (unless (input-stream-p input-stream)
     (error 'type-error
           :datum input-stream
           :expected-type '(satisfies input-stream-p)))
index a566626..c5a028c 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".)
-"0.8.7.40"
+"0.8.7.41"