diff --git a/quickjs.c b/quickjs.c index 8006e1e..b6a2df5 100644 --- a/quickjs.c +++ b/quickjs.c @@ -2225,7 +2225,8 @@ static void js_free_modules(JSContext *ctx, JSFreeModuleEnum flag) JSModuleDef *m = list_entry(el, JSModuleDef, link); if (flag == JS_FREE_MODULE_ALL || (flag == JS_FREE_MODULE_NOT_RESOLVED && !m->resolved) || - (flag == JS_FREE_MODULE_NOT_EVALUATED && !m->evaluated)) { + (flag == JS_FREE_MODULE_NOT_EVALUATED && !m->evaluated + && !m->eval_mark)) { js_free_module_def(ctx, m); } } @@ -28009,6 +28010,7 @@ static JSValue js_evaluate_module(JSContext *ctx, JSModuleDef *m) ret_val = js_evaluate_module(ctx, m1); if (JS_IsException(ret_val)) { m->eval_mark = FALSE; + js_free_modules(ctx, JS_FREE_MODULE_NOT_EVALUATED); goto clean; } if (!JS_IsUndefined(ret_val)) {