Index: /trunk/ccl/lib/macros.lisp
===================================================================
--- /trunk/ccl/lib/macros.lisp	(revision 5404)
+++ /trunk/ccl/lib/macros.lisp	(revision 5405)
@@ -1377,10 +1377,12 @@
 executed as an implicit progn with VAR bound to an output string stream.
 All output to that string stream is saved in a string."
-  (let ((e-type (gensym "e-type")))
+  (let ((string-var (gensym "string")))
     (multiple-value-bind (forms decls) (parse-body body env nil)
-      `(let* ((,e-type ,(if element-type-p element-type `'base-char))
-              (,var (if ,string
+      `(let* ((,string-var ,string)
+              (,var (if ,string-var
                         (%make-string-output-stream ,string)
-                        (make-string-output-stream :element-type ,e-type))))
+                      ,@(if element-type-p
+                            `((make-string-output-stream :element-type ',element-type))
+                            `((make-string-output-stream))))))
          ,@decls
          (unwind-protect
