Replace half-assed DYNAMIC-WIND protection of input port by the one
Richard Kelsey suggested for Scheme 48.
This commit is contained in:
parent
91002918fc
commit
69a2031350
|
@ -13,10 +13,11 @@
|
||||||
(define (read-forms pathname package)
|
(define (read-forms pathname package)
|
||||||
(let* ((filename (namestring pathname #f *scheme-file-type*))
|
(let* ((filename (namestring pathname #f *scheme-file-type*))
|
||||||
(truename (translate filename))
|
(truename (translate filename))
|
||||||
(port #f))
|
(port (open-input-file truename)))
|
||||||
(dynamic-wind
|
(dynamic-wind
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(set! port (open-input-file truename)))
|
(if (not port)
|
||||||
|
(error "attempt to throw back into a file read"))) ; message needs work
|
||||||
(lambda ()
|
(lambda ()
|
||||||
((fluid $note-file-package) filename package)
|
((fluid $note-file-package) filename package)
|
||||||
(let ((o-port (current-noise-port)))
|
(let ((o-port (current-noise-port)))
|
||||||
|
@ -24,7 +25,8 @@
|
||||||
(force-output o-port)
|
(force-output o-port)
|
||||||
(really-read-forms port)))
|
(really-read-forms port)))
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(close-input-port port)))))
|
(close-input-port port)
|
||||||
|
(set! port #f)))))
|
||||||
|
|
||||||
(define (really-read-forms port)
|
(define (really-read-forms port)
|
||||||
(let loop ((forms '()))
|
(let loop ((forms '()))
|
||||||
|
|
Loading…
Reference in New Issue