Index: /trunk/ccl/level-1/l1-streams.lisp
===================================================================
--- /trunk/ccl/level-1/l1-streams.lisp	(revision 5589)
+++ /trunk/ccl/level-1/l1-streams.lisp	(revision 5590)
@@ -2979,7 +2979,12 @@
                           (t '%ioblock-write-char-translating-newline-to-line-separator))))))))
 
-(defun buffer-element-type-for-character-encoding (encoding)
-  (declare (ignore encoding))
-  '(unsigned-byte 8))
+
+(defun ensure-reasonable-element-type (element-type)
+  (let* ((upgraded (upgraded-array-element-type element-type)))
+    (if (eq upgraded 'bit)
+      '(unsigned-byte 8)
+      (if (eq upgraded t)
+        (error "Stream element-type ~s can't be reasonably supported." element-type)
+        upgraded))))
 
 (defun init-stream-ioblock (stream
@@ -3035,6 +3040,7 @@
             (make-heap-ivector insize
                                (if character-p
-                                 (buffer-element-type-for-character-encoding encoding)
-                                 element-type))
+                                 '(unsigned-byte 8)
+                                 (setq element-type
+                                       (ensure-reasonable-element-type element-type))))
           (setf (ioblock-inbuf ioblock)
                 (make-io-buffer :buffer buffer
@@ -3060,6 +3066,6 @@
               (make-heap-ivector outsize
                                  (if character-p
-                                   (buffer-element-type-for-character-encoding encoding)
-                                   element-type))
+                                   '(unsigned-byte 8)
+                                   (setq element-type (ensure-reasonable-element-type element-type))))
             (setf (ioblock-outbuf ioblock)
                   (make-io-buffer :buffer buffer
