aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/ZigGlobalObject.cpp
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-14 19:55:48 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-14 19:55:48 -0800
commit9c3b2f7ad6549f1c86832bb9027278fcce9b80b5 (patch)
tree4327980446f0fec4a2e15f77ceeedb7cac728e5f /src/bun.js/bindings/ZigGlobalObject.cpp
parent436b8e14611e346fdb2c581a7c137f1dde10f1b0 (diff)
downloadbun-9c3b2f7ad6549f1c86832bb9027278fcce9b80b5.tar.gz
bun-9c3b2f7ad6549f1c86832bb9027278fcce9b80b5.tar.zst
bun-9c3b2f7ad6549f1c86832bb9027278fcce9b80b5.zip
Fix crash in web crypto. caused by refptr
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(