From a42a9e901c8514493baf68bae9720fa3f8d69d2e Mon Sep 17 00:00:00 2001 From: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> Date: Sat, 15 Oct 2022 21:06:08 -0700 Subject: Errors must return 0 instead of undefined --- src/bun.js/bindings/ZigGeneratedClasses.cpp | 116 ++++++++++++++++++++++++---- 1 file changed, 101 insertions(+), 15 deletions(-) (limited to 'src/bun.js/bindings/ZigGeneratedClasses.cpp') diff --git a/src/bun.js/bindings/ZigGeneratedClasses.cpp b/src/bun.js/bindings/ZigGeneratedClasses.cpp index 9fbc436ac..93e69455b 100644 --- a/src/bun.js/bindings/ZigGeneratedClasses.cpp +++ b/src/bun.js/bindings/ZigGeneratedClasses.cpp @@ -446,7 +446,12 @@ JSSubprocess* JSSubprocess::create(JSC::VM& vm, JSC::JSGlobalObject* globalObjec } extern "C" void* Subprocess__fromJS(JSC::EncodedJSValue value) { - JSSubprocess* object = JSC::jsDynamicCast(JSValue::decode(value)); + JSC::JSValue decodedValue = JSC::JSValue::decode(value); + if (!decodedValue || decodedValue.isUndefinedOrNull()) + return nullptr; + + JSSubprocess* object = JSC::jsDynamicCast(decodedValue); + if (!object) return nullptr; @@ -694,7 +699,12 @@ JSSHA1* JSSHA1::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Stru } extern "C" void* SHA1__fromJS(JSC::EncodedJSValue value) { - JSSHA1* object = JSC::jsDynamicCast(JSValue::decode(value)); + JSC::JSValue decodedValue = JSC::JSValue::decode(value); + if (!decodedValue || decodedValue.isUndefinedOrNull()) + return nullptr; + + JSSHA1* object = JSC::jsDynamicCast(decodedValue); + if (!object) return nullptr; @@ -927,7 +937,12 @@ JSMD5* JSMD5::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Struct } extern "C" void* MD5__fromJS(JSC::EncodedJSValue value) { - JSMD5* object = JSC::jsDynamicCast(JSValue::decode(value)); + JSC::JSValue decodedValue = JSC::JSValue::decode(value); + if (!decodedValue || decodedValue.isUndefinedOrNull()) + return nullptr; + + JSMD5* object = JSC::jsDynamicCast(decodedValue); + if (!object) return nullptr; @@ -1160,7 +1175,12 @@ JSMD4* JSMD4::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Struct } extern "C" void* MD4__fromJS(JSC::EncodedJSValue value) { - JSMD4* object = JSC::jsDynamicCast(JSValue::decode(value)); + JSC::JSValue decodedValue = JSC::JSValue::decode(value); + if (!decodedValue || decodedValue.isUndefinedOrNull()) + return nullptr; + + JSMD4* object = JSC::jsDynamicCast(decodedValue); + if (!object) return nullptr; @@ -1393,7 +1413,12 @@ JSSHA224* JSSHA224::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC:: } extern "C" void* SHA224__fromJS(JSC::EncodedJSValue value) { - JSSHA224* object = JSC::jsDynamicCast(JSValue::decode(value)); + JSC::JSValue decodedValue = JSC::JSValue::decode(value); + if (!decodedValue || decodedValue.isUndefinedOrNull()) + return nullptr; + + JSSHA224* object = JSC::jsDynamicCast(decodedValue); + if (!object) return nullptr; @@ -1626,7 +1651,12 @@ JSSHA512* JSSHA512::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC:: } extern "C" void* SHA512__fromJS(JSC::EncodedJSValue value) { - JSSHA512* object = JSC::jsDynamicCast(JSValue::decode(value)); + JSC::JSValue decodedValue = JSC::JSValue::decode(value); + if (!decodedValue || decodedValue.isUndefinedOrNull()) + return nullptr; + + JSSHA512* object = JSC::jsDynamicCast(decodedValue); + if (!object) return nullptr; @@ -1859,7 +1889,12 @@ JSSHA384* JSSHA384::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC:: } extern "C" void* SHA384__fromJS(JSC::EncodedJSValue value) { - JSSHA384* object = JSC::jsDynamicCast(JSValue::decode(value)); + JSC::JSValue decodedValue = JSC::JSValue::decode(value); + if (!decodedValue || decodedValue.isUndefinedOrNull()) + return nullptr; + + JSSHA384* object = JSC::jsDynamicCast(decodedValue); + if (!object) return nullptr; @@ -2092,7 +2127,12 @@ JSSHA256* JSSHA256::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC:: } extern "C" void* SHA256__fromJS(JSC::EncodedJSValue value) { - JSSHA256* object = JSC::jsDynamicCast(JSValue::decode(value)); + JSC::JSValue decodedValue = JSC::JSValue::decode(value); + if (!decodedValue || decodedValue.isUndefinedOrNull()) + return nullptr; + + JSSHA256* object = JSC::jsDynamicCast(decodedValue); + if (!object) return nullptr; @@ -2325,7 +2365,12 @@ JSSHA512_256* JSSHA512_256::create(JSC::VM& vm, JSC::JSGlobalObject* globalObjec } extern "C" void* SHA512_256__fromJS(JSC::EncodedJSValue value) { - JSSHA512_256* object = JSC::jsDynamicCast(JSValue::decode(value)); + JSC::JSValue decodedValue = JSC::JSValue::decode(value); + if (!decodedValue || decodedValue.isUndefinedOrNull()) + return nullptr; + + JSSHA512_256* object = JSC::jsDynamicCast(decodedValue); + if (!object) return nullptr; @@ -2369,6 +2414,10 @@ extern "C" JSC::EncodedJSValue ServerWebSocketPrototype__getData(void* ptr, JSC: JSC_DECLARE_CUSTOM_GETTER(ServerWebSocketPrototype__dataGetterWrap); +extern "C" bool ServerWebSocketPrototype__setData(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::EncodedJSValue value); +JSC_DECLARE_CUSTOM_SETTER(ServerWebSocketPrototype__dataSetterWrap); + + extern "C" EncodedJSValue ServerWebSocketPrototype__getBufferedAmount(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); JSC_DECLARE_HOST_FUNCTION(ServerWebSocketPrototype__getBufferedAmountCallback); @@ -2406,7 +2455,7 @@ STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSServerWebSocketPrototype, JSServerWebSocke static const HashTableValue JSServerWebSocketPrototypeTableValues[] = { { "close"_s, static_cast(JSC::PropertyAttribute::Function), NoIntrinsic, { HashTableValue::NativeFunctionType, ServerWebSocketPrototype__closeCallback, 1 } } , -{ "data"_s, static_cast(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { HashTableValue::GetterSetterType, ServerWebSocketPrototype__dataGetterWrap, 0 } } , +{ "data"_s, static_cast(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { HashTableValue::GetterSetterType, ServerWebSocketPrototype__dataGetterWrap, ServerWebSocketPrototype__dataSetterWrap } } , { "getBufferedAmount"_s, static_cast(JSC::PropertyAttribute::Function), NoIntrinsic, { HashTableValue::NativeFunctionType, ServerWebSocketPrototype__getBufferedAmountCallback, 0 } } , { "isSubscribed"_s, static_cast(JSC::PropertyAttribute::Function), NoIntrinsic, { HashTableValue::NativeFunctionType, ServerWebSocketPrototype__isSubscribedCallback, 1 } } , { "publish"_s, static_cast(JSC::PropertyAttribute::Function), NoIntrinsic, { HashTableValue::NativeFunctionType, ServerWebSocketPrototype__publishCallback, 3 } } , @@ -2479,6 +2528,18 @@ extern "C" void ServerWebSocketPrototype__dataSetCachedValue(JSC::EncodedJSValue } +JSC_DEFINE_CUSTOM_SETTER(ServerWebSocketPrototype__dataSetterWrap, (JSGlobalObject * lexicalGlobalObject, EncodedJSValue thisValue, EncodedJSValue encodedValue, PropertyName attributeName)) +{ + auto& vm = lexicalGlobalObject->vm(); + auto throwScope = DECLARE_THROW_SCOPE(vm); + JSServerWebSocket* thisObject = jsCast(JSValue::decode(thisValue)); + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + auto result = ServerWebSocketPrototype__setData(thisObject->wrapped(), lexicalGlobalObject, encodedValue); + + RELEASE_AND_RETURN(throwScope, result); +} + + JSC_DEFINE_HOST_FUNCTION(ServerWebSocketPrototype__getBufferedAmountCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); @@ -2721,7 +2782,12 @@ JSServerWebSocket* JSServerWebSocket::create(JSC::VM& vm, JSC::JSGlobalObject* g } extern "C" void* ServerWebSocket__fromJS(JSC::EncodedJSValue value) { - JSServerWebSocket* object = JSC::jsDynamicCast(JSValue::decode(value)); + JSC::JSValue decodedValue = JSC::JSValue::decode(value); + if (!decodedValue || decodedValue.isUndefinedOrNull()) + return nullptr; + + JSServerWebSocket* object = JSC::jsDynamicCast(decodedValue); + if (!object) return nullptr; @@ -2968,7 +3034,12 @@ JSTextDecoder* JSTextDecoder::create(JSC::VM& vm, JSC::JSGlobalObject* globalObj } extern "C" void* TextDecoder__fromJS(JSC::EncodedJSValue value) { - JSTextDecoder* object = JSC::jsDynamicCast(JSValue::decode(value)); + JSC::JSValue decodedValue = JSC::JSValue::decode(value); + if (!decodedValue || decodedValue.isUndefinedOrNull()) + return nullptr; + + JSTextDecoder* object = JSC::jsDynamicCast(decodedValue); + if (!object) return nullptr; @@ -3530,7 +3601,12 @@ JSRequest* JSRequest::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC } extern "C" void* Request__fromJS(JSC::EncodedJSValue value) { - JSRequest* object = JSC::jsDynamicCast(JSValue::decode(value)); + JSC::JSValue decodedValue = JSC::JSValue::decode(value); + if (!decodedValue || decodedValue.isUndefinedOrNull()) + return nullptr; + + JSRequest* object = JSC::jsDynamicCast(decodedValue); + if (!object) return nullptr; @@ -4045,7 +4121,12 @@ JSResponse* JSResponse::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, J } extern "C" void* Response__fromJS(JSC::EncodedJSValue value) { - JSResponse* object = JSC::jsDynamicCast(JSValue::decode(value)); + JSC::JSValue decodedValue = JSC::JSValue::decode(value); + if (!decodedValue || decodedValue.isUndefinedOrNull()) + return nullptr; + + JSResponse* object = JSC::jsDynamicCast(decodedValue); + if (!object) return nullptr; @@ -4409,7 +4490,12 @@ JSBlob* JSBlob::create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Stru } extern "C" void* Blob__fromJS(JSC::EncodedJSValue value) { - JSBlob* object = JSC::jsDynamicCast(JSValue::decode(value)); + JSC::JSValue decodedValue = JSC::JSValue::decode(value); + if (!decodedValue || decodedValue.isUndefinedOrNull()) + return nullptr; + + JSBlob* object = JSC::jsDynamicCast(decodedValue); + if (!object) return nullptr; -- cgit v1.2.3