~ chicken-core (chicken-5) c29e9b2151bfd06efb1e46dd51682059770e8048
commit c29e9b2151bfd06efb1e46dd51682059770e8048
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Tue Mar 1 11:27:51 2011 +0100
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Tue Mar 1 11:27:51 2011 +0100
fixes in octal string-escape reader; added test
diff --git a/library.scm b/library.scm
index 4e1aa1fb..6f0146b3 100644
--- a/library.scm
+++ b/library.scm
@@ -2389,7 +2389,7 @@ EOF
(if (##sys#unicode-surrogate? n)
(if (and (eqv? #\\ (##sys#read-char-0 port))
(eqv? #\u (##sys#read-char-0 port)))
- (let* ((m (r-usequence "u" 4))
+ (let* ((m (r-usequence "u" 4 16))
(cp (##sys#surrogates->codepoint n m)))
(if cp
(loop (##sys#read-char-0 port)
@@ -2398,7 +2398,7 @@ EOF
(##sys#read-error port "unpaired escaped surrogate" n))
(loop (##sys#read-char-0 port) (r-cons-codepoint n lst)) ) ))
((#\U)
- (let ([n (r-usequence "U" 8)])
+ (let ([n (r-usequence "U" 8 16)])
(if (##sys#unicode-surrogate? n)
(##sys#read-error port (string-append "invalid escape (surrogate)" n))
(loop (##sys#read-char-0 port) (r-cons-codepoint n lst)) )))
@@ -2413,7 +2413,7 @@ EOF
port
"undefined escape sequence in string - probably forgot backslash"
c)
- (loop (##sys#read-char-0 port) (cons )c lst))) ) ))
+ (loop (##sys#read-char-0 port) (cons c lst))) ) )))
((eq? term c) (##sys#reverse-list->string lst))
(else (loop (##sys#read-char-0 port) (cons c lst))) ) ))
diff --git a/tests/reader-tests.scm b/tests/reader-tests.scm
index 6d3e4f76..894e8461 100644
--- a/tests/reader-tests.scm
+++ b/tests/reader-tests.scm
@@ -1,6 +1,9 @@
;;;; reader-tests.scm
+(use utils)
+
+
(set-sharp-read-syntax! #\& (lambda (p) (read p) (values)))
(set-sharp-read-syntax! #\^ (lambda (p) (read p)))
(set-read-syntax! #\! (lambda (p) (read-line p) (values)))
@@ -19,3 +22,4 @@
!! bye
(assert (string=? output "hi\nfoo\nbaz\nbye\n"))
+(assert (string=? " ." (with-input-from-string "\x20\u0020\U00000020\056" read-all)))
Trap