From 086d02003a6fb1e794d6d2e0df66d02fc15f0c36 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 31 Jul 2015 11:17:25 -0600 Subject: [PATCH] fix linking of compiled reference to a top-level variable Re-linking in a new namespace doesn't need the namespace of compilation. A "namespac.rktl" test exposed this problem, where the "transfer a definition of a macro-introduced variable" test could fail if a GC occurred between compilation in one namespace and evaluation in another. --- racket/src/racket/src/eval.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/racket/src/racket/src/eval.c b/racket/src/racket/src/eval.c index d6b926c382..8c70198679 100644 --- a/racket/src/racket/src/eval.c +++ b/racket/src/racket/src/eval.c @@ -1004,9 +1004,9 @@ static Scheme_Object *link_toplevel(Scheme_Object **exprs, int which, Scheme_Env home = scheme_get_bucket_home(b); - if (!env || !home) + if (!env) return (Scheme_Object *)b; - else if (!home->module) + else if (!home || !home->module) return (Scheme_Object *)scheme_global_bucket((Scheme_Object *)b->key, env); else return link_module_variable(home->module->modname,