diff --git a/.changeset/editor-isolate-scope.md b/.changeset/editor-isolate-scope.md new file mode 100644 index 00000000..ab5ac5df --- /dev/null +++ b/.changeset/editor-isolate-scope.md @@ -0,0 +1,5 @@ +--- +"@godot-js/editor": patch +--- + +**Fix:** Enter the V8 isolate and context scopes before editor codegen compile to stop a SIGSEGV on batch reimport. diff --git a/weaver-editor/jsb_editor_plugin.cpp b/weaver-editor/jsb_editor_plugin.cpp index 0e43c99d..53f9f8b7 100644 --- a/weaver-editor/jsb_editor_plugin.cpp +++ b/weaver-editor/jsb_editor_plugin.cpp @@ -856,9 +856,11 @@ try { std::shared_ptr environment = lang->get_environment(); v8::Isolate* isolate = environment->get_isolate(); + v8::Isolate::Scope isolate_scope(isolate); v8::HandleScope handle_scope(isolate); v8::Local context = environment->get_context(); + v8::Context::Scope context_scope(context); v8::MaybeLocal func_maybe = jsb::impl::Helper::compile_function( context, code, ::std::size(code) - 1, "generate_resource_type"); @@ -930,9 +932,11 @@ try { std::shared_ptr environment = lang->get_environment(); v8::Isolate* isolate = environment->get_isolate(); + v8::Isolate::Scope isolate_scope(isolate); v8::HandleScope handle_scope(isolate); v8::Local context = environment->get_context(); + v8::Context::Scope context_scope(context); v8::MaybeLocal func_maybe = jsb::impl::Helper::compile_function( context, code, ::std::size(code) - 1, "generate_resource_type");