Skip to content

Commit 3d042c8

Browse files
committed
fix: fix crash on stop for Node.js engine
1 parent 654d1d7 commit 3d042c8

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

src/legacy/main/NodeJsHelper.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -181,16 +181,24 @@ std::shared_ptr<ScriptEngine> newEngine() {
181181
v8::HandleScope handle_scope(isolate);
182182
v8::Context::Scope context_scope(setup->context());
183183

184-
std::shared_ptr<ScriptEngine> engine(
185-
new ScriptEngineImpl({}, isolate, setup->context(), false),
186-
ScriptEngine::Deleter()
187-
);
184+
std::shared_ptr<ScriptEngine> engine(new ScriptEngineImpl({}, isolate, setup->context(), false), [](ScriptEngine*) {
185+
});
188186

189187
lse::LegacyScriptEngine::getLogger().debug("Initialize ScriptEngine for node.js [{}]", (void*)engine.get());
190188
environments[engine] = env;
191189
setups[engine] = std::move(setup);
192190
isRunning[env] = true;
193191

192+
node::AddEnvironmentCleanupHook(
193+
isolate,
194+
[](void* arg) {
195+
static_cast<ScriptEngine*>(arg)->destroy();
196+
lse::LegacyScriptEngine::getLogger().debug("Destroy ScriptEngine for node.js [{}]", arg);
197+
lse::LegacyScriptEngine::getLogger().debug("Destroy EnvironmentCleanupHook");
198+
},
199+
engine.get()
200+
);
201+
194202
return engine;
195203
}
196204

0 commit comments

Comments
 (0)