wisp
 
(Arne Babenhauserheide)
2014-07-14: use with-fluids instead of set-fluid

use with-fluids instead of set-fluid

diff --git a/wisp-reader.w b/wisp-reader.w
--- a/wisp-reader.w
+++ b/wisp-reader.w
@@ -32,13 +32,20 @@ define : read-one-wisp-sexp port env
   define : read-wisp-chunk
     if : eof-object? : peek-char port
       read-char port ; return eof: we’re done
-      let : : dpe : fluid-ref %default-port-encoding
-        when : not dpe
-               fluid-set! %default-port-encoding "UTF-8"
-        let
-           : s : wisp2lisp : wisp-chunkreader port
-           set! : wisp-pending-port port
-                  open-input-string s
+      let
+           : dpe : fluid-ref %default-port-encoding
+             set-pending-port!
+               lambda ()
+                   let
+                     : s : wisp2lisp : wisp-chunkreader port
+                     set! : wisp-pending-port port
+                        open-input-string s
+           if dpe ; default port encoding is set
+             set-pending-port!
+             ; else: we need to redefine %default-port-encoding to
+             ; UTF-8. Use with-fluids to avoid affecting other code.
+             with-fluids : : %default-port-encoding "UTF-8"
+               set-pending-port!
            try-pending
   define : try-pending
     let : : pending-port : wisp-pending-port port