From 2ae9f14f9eac456a61a426cb8cd59d116a29deae Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 10 Dec 2010 18:33:44 -0700 Subject: [PATCH] fix exn raised in refab-struct read errors Closes PR 11530 --- collects/tests/racket/read.rktl | 9 +++++++++ src/racket/src/read.c | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/collects/tests/racket/read.rktl b/collects/tests/racket/read.rktl index 745d77ad92..eae885b61f 100644 --- a/collects/tests/racket/read.rktl +++ b/collects/tests/racket/read.rktl @@ -1069,6 +1069,15 @@ (err/rt-test (readstr "#s((v 0 (2 #f) #()) 1)") exn:fail:read?) (err/rt-test (readstr "#s((v 0 (2 #f) #(0)) 1)") exn:fail:read?) +(err/rt-test (readstr "#s(1 2)") (lambda (x) + (and (exn:fail:read? x) + (not (exn:fail:read:eof? x))))) +(err/rt-test (readstr "#s(1 2") exn:fail:read:eof?) +(err/rt-test (read-syntax 's (open-input-string "#s((a #(0)) 1)")) + (lambda (x) + (and (exn:fail:read? x) + (not (exn:fail:read:eof? x))))) + ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (report-errs) diff --git a/src/racket/src/read.c b/src/racket/src/read.c index 143cabdd73..2de6f3e900 100644 --- a/src/racket/src/read.c +++ b/src/racket/src/read.c @@ -1321,7 +1321,7 @@ read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table * st = NULL; if (!st || (st->num_slots != (SCHEME_VEC_SIZE(v) - 1))) { - scheme_read_err(port, stxsrc, line, col, pos, SPAN(port, pos), EOF, indentation, + scheme_read_err(port, stxsrc, line, col, pos, SPAN(port, pos), 0, indentation, (SCHEME_VEC_SIZE(v) ? (st ? ("read: mismatch between structure description" @@ -1332,7 +1332,7 @@ read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table * } if (stxsrc && !(MZ_OPT_HASH_KEY(&st->iso) & STRUCT_TYPE_ALL_IMMUTABLE)) { - scheme_read_err(port, stxsrc, line, col, pos, SPAN(port, pos), EOF, indentation, + scheme_read_err(port, stxsrc, line, col, pos, SPAN(port, pos), 0, indentation, "read: cannot read mutable `#s' form as syntax"); }