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) {