From f4d05aaba82b44e53d713e546c2484d698e1c400 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 23 Jul 2015 08:04:13 -0600 Subject: [PATCH] fix bytecode-marshaling problem related to rename transformers --- racket/src/racket/src/syntax.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/racket/src/racket/src/syntax.c b/racket/src/racket/src/syntax.c index 85f14d2c38..b710161001 100644 --- a/racket/src/racket/src/syntax.c +++ b/racket/src/racket/src/syntax.c @@ -5247,7 +5247,7 @@ static Scheme_Object *any_unreachable_scope(Scheme_Scope_Set *scopes, Scheme_Mar return NULL; } -static void possiblly_reachable_free_id(Scheme_Object *val, +static void possiblly_reachable_free_id(Scheme_Object *val, /* mpair or stx */ Scheme_Scope_Set *scopes, Scheme_Marshal_Tables *mt) { @@ -5255,6 +5255,13 @@ static void possiblly_reachable_free_id(Scheme_Object *val, Scheme_Object *unreachable_scope, *l; Scheme_Hash_Table *ht; + if (SCHEME_MPAIRP(val)) + free_id = (Scheme_Stx *)SCHEME_CAR(SCHEME_CDR(val)); + else + free_id = (Scheme_Stx *)val; + + STX_ASSERT(SCHEME_STXP((Scheme_Object *)free_id)); + unreachable_scope = any_unreachable_scope(scopes, mt); if (!unreachable_scope) {