diff --git a/library.scm b/library.scm index 31c8b37..db4b553 100644 --- a/library.scm +++ b/library.scm @@ -2696,7 +2696,8 @@ EOF [h (and srst (##sys#slot srst (char->integer c)) ) ] ) (if h ;then handled by read-table entry - (h c port) + (##sys#call-with-values (lambda () (h c port)) + (lambda xs (if (null? xs) (readrec) (car xs)))) ;otherwise chicken extended r5rs syntax (case c ((#\') @@ -2720,7 +2721,8 @@ EOF (spdrst (##sys#slot crt 3)) (h (and spdrst (##sys#slot spdrst (char->integer dchar)) ) ) ) ;# handled by parameterized # read-table entry? - (cond (h (h dchar port n)) + (cond (h (##sys#call-with-values (lambda () (h dchar port n)) + (lambda xs (if (null? xs) (readrec) (car xs))))) ;#? ((or (eq? dchar #\)) (char-whitespace? dchar)) (##sys#sharp-number-hook port n)) (else (##sys#read-error port "invalid parameterized read syntax" dchar n) ) ) ) @@ -2728,7 +2730,8 @@ EOF (h (and sdrst (##sys#slot sdrst (char->integer dchar)) ) ) ) (if h ;then handled by # read-table entry - (h dchar port) + (##sys#call-with-values (lambda () (h dchar port)) + (lambda xs (if (null? xs) (readrec) (car xs)))) ;otherwise chicken extended r5rs syntax (case (char-downcase dchar) ((#\x) (##sys#read-char-0 port) (r-number-with-exactness 16)) @@ -2795,7 +2798,9 @@ EOF (##sys#read-error port "invalid `#!' token" tok) ) ) ] ) ) ) ) ) ) - (else (##sys#user-read-hook dchar port)) ) ) ) ) ) ) + (else + (##sys#call-with-values (lambda () (##sys#user-read-hook dchar port)) + (lambda xs (if (null? xs) (readrec) (car xs)))) ) ) ) ) ) ) ) ((#\() (r-list #\( #\))) ((#\)) (##sys#read-char-0 port) (container c)) ((#\") (##sys#read-char-0 port) (r-string #\"))