From fe9f0e6e92dc6016e28317fa6814c9352ce0cf34 Mon Sep 17 00:00:00 2001 From: Stephen Chang Date: Wed, 1 Feb 2017 16:04:51 -0500 Subject: [PATCH] fix segfault when using preserved stx prop with non-interned-symbol key closes #1594 --- pkgs/racket-test-core/tests/racket/stx.rktl | 6 ++++++ racket/src/racket/src/syntax.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/pkgs/racket-test-core/tests/racket/stx.rktl b/pkgs/racket-test-core/tests/racket/stx.rktl index 2a3c417acf..012284b855 100644 --- a/pkgs/racket-test-core/tests/racket/stx.rktl +++ b/pkgs/racket-test-core/tests/racket/stx.rktl @@ -2468,6 +2468,12 @@ (check-bad (read (open-input-string "#0=(1 . #0#)"))) (check-bad void)) +(err/rt-test (syntax-property #'+ 1 #'+ #t) + (lambda (exn) + (regexp-match + #rx"expected an interned symbol key for a preserved property" + (exn-message exn)))) + ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Make sure the srcloc encoding doesn't do something strange ;; with a path in a root directory: diff --git a/racket/src/racket/src/syntax.c b/racket/src/racket/src/syntax.c index 617c3dc7c8..857c1c65c3 100644 --- a/racket/src/racket/src/syntax.c +++ b/racket/src/racket/src/syntax.c @@ -8229,7 +8229,7 @@ static Scheme_Object *syntax_property(int argc, Scheme_Object **argv) if ((argc > 3) && SCHEME_TRUEP(argv[3])) { if (!SCHEME_SYMBOLP(argv[1]) || SCHEME_SYM_WEIRDP(argv[1])) scheme_contract_error("syntax-property", - "expected an interned symbol key for a preserved property" + "expected an interned symbol key for a preserved property", "given", 1, argv[1], NULL); }