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;