(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