From 1485bc71d3c855c17112625ff5bb66e2210849ab Mon Sep 17 00:00:00 2001 From: Zack Radisic <56137411+zackradisic@users.noreply.github.com> Date: Mon, 31 Mar 2025 18:19:23 -0700 Subject: [PATCH] make it not crash by passing thisValue --- src/bun.js/api/server.classes.ts | 2 ++ src/bun.js/api/server/NodeHTTPResponse.zig | 10 +++++----- src/codegen/generate-classes.ts | 6 ++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/bun.js/api/server.classes.ts b/src/bun.js/api/server.classes.ts index 33e7b3522a..ac479528e6 100644 --- a/src/bun.js/api/server.classes.ts +++ b/src/bun.js/api/server.classes.ts @@ -166,6 +166,8 @@ export default [ onabort: { getter: "getOnAbort", setter: "setOnAbort", + passThis: true, + this: true, }, hasCustomOnData: { getter: "getHasCustomOnData", diff --git a/src/bun.js/api/server/NodeHTTPResponse.zig b/src/bun.js/api/server/NodeHTTPResponse.zig index 605f34d432..85c904fd9c 100644 --- a/src/bun.js/api/server/NodeHTTPResponse.zig +++ b/src/bun.js/api/server/NodeHTTPResponse.zig @@ -895,22 +895,22 @@ pub fn getOnWritable(this: *NodeHTTPResponse, _: *JSC.JSGlobalObject) JSC.JSValu return this.onWritableCallback.get() orelse .undefined; } -pub fn getOnAbort(this: *NodeHTTPResponse, _: *JSC.JSGlobalObject) JSC.JSValue { +pub fn getOnAbort(this: *NodeHTTPResponse, this_value: JSC.JSValue, _: *JSC.JSGlobalObject) JSC.JSValue { if (this.flags.socket_closed) { return .undefined; } - return NodeHTTPResponse.onAbortedGetCached(this.getThisValue()) orelse .undefined; + return NodeHTTPResponse.onAbortedGetCached(this_value) orelse .undefined; } -pub fn setOnAbort(this: *NodeHTTPResponse, globalObject: *JSC.JSGlobalObject, value: JSValue) bool { +pub fn setOnAbort(this: *NodeHTTPResponse, this_value: JSC.JSValue, globalObject: *JSC.JSGlobalObject, value: JSValue) bool { if (this.flags.socket_closed) { return true; } if (this.isDone() or value == .undefined) { - NodeHTTPResponse.onAbortedSetCached(this.getThisValue(), globalObject, .zero); + NodeHTTPResponse.onAbortedSetCached(this_value, globalObject, .zero); } else { - NodeHTTPResponse.onAbortedSetCached(this.getThisValue(), globalObject, value.withAsyncContextIfNeeded(globalObject)); + NodeHTTPResponse.onAbortedSetCached(this_value, globalObject, value.withAsyncContextIfNeeded(globalObject)); } return true; diff --git a/src/codegen/generate-classes.ts b/src/codegen/generate-classes.ts index 9e7fda8a8b..2dcd34df43 100644 --- a/src/codegen/generate-classes.ts +++ b/src/codegen/generate-classes.ts @@ -974,10 +974,8 @@ extern JSC_CALLCONV void ${symbolName(typeName, name)}SetCachedValue(JSC::Encode extern JSC_CALLCONV JSC::EncodedJSValue ${symbolName(typeName, name)}GetCachedValue(JSC::EncodedJSValue thisValue) { - auto decoded = JSValue::decode(thisValue); - if (decoded.isEmpty()) return JSValue::encode(decoded); - auto* thisObject = jsCast<${className(typeName)}*>(decoded); - return JSValue::encode(thisObject->${cacheName}.get()); + auto* thisObject = jsCast<${className(typeName)}*>(JSValue::decode(thisValue)); + return JSValue::encode(thisObject->${cacheName}.get()); } `.trim();