diff options
-rw-r--r-- | libguile/read.c | 6 | ||||
-rw-r--r-- | test-suite/tests/reader.test | 11 |
2 files changed, 12 insertions, 5 deletions
diff --git a/libguile/read.c b/libguile/read.c index 5f0be3148..4057e4fd0 100644 --- a/libguile/read.c +++ b/libguile/read.c @@ -1116,13 +1116,9 @@ scm_read_scsh_block_comment (scm_t_wchar chr, SCM port) { int bang_seen = 0; - /* We can use the get_byte here because there is no need to get the - locale correct when reading comments. This presumes that - hash and exclamation points always represent themselves no - matter what the source encoding is.*/ for (;;) { - int c = scm_get_byte_or_eof (port); + int c = scm_getc (port); if (c == EOF) scm_i_input_error ("skip_block_comment", port, diff --git a/test-suite/tests/reader.test b/test-suite/tests/reader.test index 13c852665..1d6cc41ff 100644 --- a/test-suite/tests/reader.test +++ b/test-suite/tests/reader.test @@ -253,6 +253,14 @@ (read-string "'abcde"))))) (and (equal? (source-property sexp 'line) 0) (equal? (source-property sexp 'column) 0)))) + (pass-if "position of SCSH block comment" + ;; In Guile 2.0.0 the reader would not update the port's position + ;; when reading an SCSH block comment. + (let ((sexp (with-read-options '(positions) + (lambda () + (read-string "#!foo\nbar\nbaz\n!#\n(hello world)\n"))))) + (= 4 (source-property sexp 'line)))) + (with-test-prefix "r6rs-hex-escapes" (pass-if-exception "non-hex char in two-digit hex-escape" exception:illegal-escape @@ -417,3 +425,6 @@ ("#,@foo" . (unsyntax-splicing foo))))) +;;; Local Variables: +;;; eval: (put 'with-read-options 'scheme-indent-function 1) +;;; End: |