From a0378a2b02e6627909df943758182f869534d762 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 12 Nov 2011 06:08:42 -0700 Subject: [PATCH] fix bug in prefab syntax marshaling Closes PR 12352 --- collects/tests/racket/macro.rktl | 9 +++++++++ src/racket/src/syntax.c | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/collects/tests/racket/macro.rktl b/collects/tests/racket/macro.rktl index ebf8261244..073bf4e3a6 100644 --- a/collects/tests/racket/macro.rktl +++ b/collects/tests/racket/macro.rktl @@ -627,6 +627,15 @@ (test 10 'ten (invoke compare))) +;; ---------------------------------------- +;; Check zo marshaling of prefab in a list: + +(let ([s #'(quote-syntax (#s(foo bar)))]) + (define-values (i o) (make-pipe)) + (parameterize ([current-namespace (make-base-namespace)] + [read-accept-compiled #t]) + (write (compile s) o) + (test (syntax->datum (eval (read i))) values '(#s(foo bar))))) ;; ---------------------------------------- diff --git a/src/racket/src/syntax.c b/src/racket/src/syntax.c index e367b7b01c..efc9354cdc 100644 --- a/src/racket/src/syntax.c +++ b/src/racket/src/syntax.c @@ -6338,7 +6338,7 @@ static Scheme_Object *extract_for_common_wrap(Scheme_Object *a, int get_mark, in else return SCHEME_CDR(v); } - } else if (!SCHEME_BOXP(v) && !SCHEME_VECTORP(v)) { + } else if (!SCHEME_BOXP(v) && !SCHEME_VECTORP(v) && !prefab_p(v)) { /* It's atomic. */ if (get_mark) return SCHEME_CDR(a);