aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/ZigGlobalObject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/bindings/ZigGlobalObject.cpp')
-rw-r--r--src/bun.js/bindings/ZigGlobalObject.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp
index 052295bd2..abf1ecb72 100644
--- a/src/bun.js/bindings/ZigGlobalObject.cpp
+++ b/src/bun.js/bindings/ZigGlobalObject.cpp
@@ -435,6 +435,9 @@ GlobalObject::GlobalObject(JSC::VM& vm, JSC::Structure* structure)
GlobalObject::~GlobalObject()
{
+ if (crypto) {
+ delete crypto;
+ }
scriptExecutionContext()->removeFromContextsMap();
}
@@ -2374,10 +2377,12 @@ void GlobalObject::finishCreation(VM& vm)
m_subtleCryptoObject.initLater(
[](const JSC::LazyProperty<JSC::JSGlobalObject, JSC::JSObject>::Initializer& init) {
auto& global = *reinterpret_cast<Zig::GlobalObject*>(init.owner);
- RefPtr<WebCore::SubtleCrypto> crypto = WebCore::SubtleCrypto::create(global.scriptExecutionContext());
+ if (global.crypto == nullptr) {
+ global.crypto = WebCore::SubtleCrypto::createPtr(global.scriptExecutionContext());
+ }
init.set(
- toJSNewlyCreated<IDLInterface<SubtleCrypto>>(*init.owner, global, WTFMove(crypto)).getObject());
+ toJS<IDLInterface<SubtleCrypto>>(*init.owner, global, global.crypto).getObject());
});
m_primordialsObject.initLater(