~ chicken-core (chicken-5) 423eb6bf4fc4eb4de2f9b646ca0c66641f2793aa
commit 423eb6bf4fc4eb4de2f9b646ca0c66641f2793aa
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Sun Jun 20 02:17:08 2010 +0200
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Sun Jun 20 02:17:08 2010 +0200
added half-assed check for binary data in reader
diff --git a/library.scm b/library.scm
index 33b204fa..691d9e03 100644
--- a/library.scm
+++ b/library.scm
@@ -2342,16 +2342,18 @@ EOF
[else (r-number 10)] ) )
(define (r-token)
- (let loop ([c (##sys#peek-char-0 port)] [lst '()])
- (cond [(or (eof-object? c)
+ (let loop ((c (##sys#peek-char-0 port)) (lst '()))
+ (cond ((or (eof-object? c)
(char-whitespace? c)
(memq c terminating-characters) )
- (##sys#reverse-list->string lst) ]
- [else
+ (##sys#reverse-list->string lst) )
+ ((or (char=? c #\x00) (char=? c #\xff))
+ (##sys#read-error port "attempt to read expression from something that looks like binary data"))
+ (else
(when (char=? c #\/) (set! rat-flag #t))
(read-unreserved-char-0 port)
(loop (##sys#peek-char-0 port)
- (cons (if csp c (char-downcase c)) lst) ) ] ) ) )
+ (cons (if csp c (char-downcase c)) lst) ) ) ) ) )
(define (r-digits)
(let loop ((c (##sys#peek-char-0 port)) (lst '()))
Trap