~ chicken-core (chicken-5) bfe377b0f900e74a692613f2f56270576fea7a83


commit bfe377b0f900e74a692613f2f56270576fea7a83
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Mon Oct 25 02:17:50 2010 -0400
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Mon Oct 25 02:17:50 2010 -0400

    blob read-syntax fixes

diff --git a/library.scm b/library.scm
index 7008e5a4..d2f0c6f9 100644
--- a/library.scm
+++ b/library.scm
@@ -2809,11 +2809,14 @@ EOF
 	    ((char=? #\} c)
 	     (let ((str (##sys#reverse-list->string
 			 (if h
-			     (cons (integer->char h) lst)
+			     (cons (integer->char (fxshr h 4)) lst)
 			     lst))))
 	       (##core#inline "C_string_to_bytevector" str)
 	       str))
-	    ((char-whitespace? c) (loop lst h))
+	    ((char-whitespace? c) 
+	     (if h
+		 (loop (cons (integer->char (fxshr h 4)) lst) #f)
+		 (loop lst h)))
 	    (h (loop (cons (integer->char (fxior h (hex c))) lst) #f))
 	    (else (loop lst (fxshl (hex c) 4)))))))
 	      
diff --git a/tests/library-tests.scm b/tests/library-tests.scm
index 58d13e00..69e21ec4 100644
--- a/tests/library-tests.scm
+++ b/tests/library-tests.scm
@@ -137,3 +137,12 @@
 (assert (= 100 (p)))
 (set! (p) 1000)
 (assert (= 1000 (p)))
+
+
+;;; blob-literal syntax
+
+(assert (equal? '#${a} '#${0a}))
+(assert (equal? '#${ab cd} '#${abcd}))
+(assert (equal? '#${ab c} '#${ab0c}))
+(assert (equal? '#${abc} '#${ab0c}))
+(assert (equal? '#${a b c} '#${0a0b0c}))
Trap