dynamic-require: fix re-export shortcut

This commit is contained in:
Matthew Flatt 2015-01-27 13:45:38 -07:00
parent a72ef3ec05
commit d3383e3e35

View File

@ -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;