diff --git a/code/macros.lisp b/code/macros.lisp
index c37cb27f7d148521a3aa5279afb5f99a6c78aaf6..797e121ad2930f8d07e42a67c320a643b0bb76ad 100644
--- a/code/macros.lisp
+++ b/code/macros.lisp
@@ -5,7 +5,7 @@
 ;;; Carnegie Mellon University, and has been placed in the public domain.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/macros.lisp,v 1.105 2005/07/13 14:46:34 rtoy Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/macros.lisp,v 1.106 2005/10/21 13:13:33 rtoy Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -1592,9 +1592,11 @@
 		    `(make-string-input-stream ,string ,(or start 0) ,end)))))
        ,@decls
        (unwind-protect
-	   (progn ,@forms)
-	 (close ,var)
-	 ,@(if index `((setf ,index (string-input-stream-current ,var))))))))
+	    (multiple-value-prog1
+		(progn ,@forms)
+	      ,@(when index
+		   `((setf ,index (string-input-stream-current ,var)))))
+	 (close ,var)))))
 
 
 (defmacro with-output-to-string ((var &optional string &key element-type)