From f4fa74e6f26b7493b8c309a9014246271d6dff4f Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 6 Sep 2019 17:01:34 -0600 Subject: [PATCH] expander: fix reader bug Fix incorrect comparison of character to EOF. There's a test, already, but the test fails only if the expander is compiled in safe mode. --- pkgs/racket-test-core/tests/racket/read.rktl | 3 ++- racket/src/cs/Makefile | 2 +- racket/src/expander/read/extension.rkt | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/pkgs/racket-test-core/tests/racket/read.rktl b/pkgs/racket-test-core/tests/racket/read.rktl index dda0da359c..49491a5d8b 100644 --- a/pkgs/racket-test-core/tests/racket/read.rktl +++ b/pkgs/racket-test-core/tests/racket/read.rktl @@ -1122,7 +1122,8 @@ (parameterize ([print-unreadable #f]) (display x p))) (err/rt-test (parameterize ([print-unreadable #f]) - (write x p))))] + (write x p)) + exn:fail?))] [try-good (lambda (x) (test (void) (list x) diff --git a/racket/src/cs/Makefile b/racket/src/cs/Makefile index da4bffee90..7e99ff9c29 100644 --- a/racket/src/cs/Makefile +++ b/racket/src/cs/Makefile @@ -5,7 +5,7 @@ RACKET = ../../bin/racket SCHEME = scheme # Controls whether Racket layers are built as unsafe: -UNSAFE_COMP = # --unsafe +UNSAFE_COMP = --unsafe # Controls whether compiled code is compressed: COMPRESS_COMP = # --compress diff --git a/racket/src/expander/read/extension.rkt b/racket/src/expander/read/extension.rkt index bbb7bd43e7..58c2162c95 100644 --- a/racket/src/expander/read/extension.rkt +++ b/racket/src/expander/read/extension.rkt @@ -43,7 +43,7 @@ in config)) (define c (read-char/special in config)) - (unless (char=? c #\space) + (unless (eqv? c #\space) (reader-error in config "expected a single space after `~a`" extend-str)) @@ -56,7 +56,7 @@ (define (read-extension-#! read-recur dispatch-c in config #:get-info? [get-info? #f]) (define c (read-char/special in config)) - (unless (char-lang-nonsep? c) + (unless (and (char? c) (char-lang-nonsep? c)) (bad-syntax-error in config (if (char? c) (string dispatch-c #\! c) (string dispatch-c #\!))))