From d3383e3e3598b6d6108da61691e3de719c6abeee Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 27 Jan 2015 13:45:38 -0700 Subject: [PATCH] dynamic-require: fix re-export shortcut --- racket/src/racket/src/module.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/racket/src/racket/src/module.c b/racket/src/racket/src/module.c index 5d0fafaef0..5ff05137ef 100644 --- a/racket/src/racket/src/module.c +++ b/racket/src/racket/src/module.c @@ -1214,6 +1214,7 @@ static Scheme_Object *_dynamic_require(int argc, Scheme_Object *argv[], break; } else { if (fail_with_error) { + int started = 0; if (!phase && srcm->me->rt->provide_srcs && SCHEME_TRUEP(srcm->me->rt->provide_srcs[i])) { @@ -1221,6 +1222,9 @@ static Scheme_Object *_dynamic_require(int argc, Scheme_Object *argv[], int j; Scheme_Module *srcm2; + start_module(m, env, 0, modidx, 0, 1, base_phase, scheme_null, 0); + started = 1; + srcmname = srcm->me->rt->provide_srcs[i]; srcmname = scheme_modidx_shift(srcmname, srcm->me->src_modidx, srcm->self_modidx); srcmname = scheme_module_resolve(srcmname, 1); @@ -1269,7 +1273,8 @@ static Scheme_Object *_dynamic_require(int argc, Scheme_Object *argv[], Scheme_Config *config; Scheme_Cont_Frame_Data cframe; - start_module(m, env, 0, modidx, 0, 1, base_phase, scheme_null, 0); + if (!started) + start_module(m, env, 0, modidx, 0, 1, base_phase, scheme_null, 0); ns = scheme_make_namespace(0, NULL); a[0] = (Scheme_Object *)env; a[1] = srcm->modname;