From 5e003dccd250b1fa0f92813d36cb9a84a5080405 Mon Sep 17 00:00:00 2001 From: Jarred Sumner Date: Thu, 9 Jan 2025 03:15:31 -0800 Subject: [PATCH] Fixes #16277 (#16280) --- src/bun.js/bindings/ErrorStackTrace.cpp | 20 +++++++++------ src/bun.js/bindings/ErrorStackTrace.h | 1 + src/bun.js/bindings/ZigGlobalObject.cpp | 6 +++-- test/bun.lockb | Bin 437890 -> 438666 bytes test/js/node/vm/happy-dom-vm-16277.test.ts | 27 +++++++++++++++++++++ test/package.json | 1 + 6 files changed, 46 insertions(+), 9 deletions(-) create mode 100644 test/js/node/vm/happy-dom-vm-16277.test.ts diff --git a/src/bun.js/bindings/ErrorStackTrace.cpp b/src/bun.js/bindings/ErrorStackTrace.cpp index 80b8fde36e1320..2973aee6809db5 100644 --- a/src/bun.js/bindings/ErrorStackTrace.cpp +++ b/src/bun.js/bindings/ErrorStackTrace.cpp @@ -630,18 +630,23 @@ String sourceURL(const JSC::SourceCode& sourceCode) return sourceURL(sourceCode.provider()); } -String sourceURL(JSC::CodeBlock* codeBlock) +String sourceURL(JSC::CodeBlock& codeBlock) { - if (UNLIKELY(!codeBlock)) { + if (!codeBlock.ownerExecutable()) { return String(); } - if (!codeBlock->ownerExecutable()) { + const auto& source = codeBlock.source(); + return sourceURL(source); +} + +String sourceURL(JSC::CodeBlock* codeBlock) +{ + if (UNLIKELY(!codeBlock)) { return String(); } - const auto& source = codeBlock->source(); - return sourceURL(source); + return Zig::sourceURL(*codeBlock); } String sourceURL(JSC::VM& vm, const JSC::StackFrame& frame) @@ -650,7 +655,7 @@ String sourceURL(JSC::VM& vm, const JSC::StackFrame& frame) return "[wasm code]"_s; } - if (UNLIKELY(!frame.codeBlock())) { + if (UNLIKELY(!frame.hasLineAndColumnInfo())) { return "[native code]"_s; } @@ -833,7 +838,8 @@ String functionName(JSC::VM& vm, JSC::JSGlobalObject* lexicalGlobalObject, const return functionName; } - if (auto codeblock = frame.codeBlock()) { + if (frame.hasLineAndColumnInfo()) { + auto* codeblock = frame.codeBlock(); if (codeblock->isConstructor()) { isConstructor = true; } diff --git a/src/bun.js/bindings/ErrorStackTrace.h b/src/bun.js/bindings/ErrorStackTrace.h index 106b11a3db58c4..e34e8daea5d479 100644 --- a/src/bun.js/bindings/ErrorStackTrace.h +++ b/src/bun.js/bindings/ErrorStackTrace.h @@ -222,6 +222,7 @@ String sourceURL(const JSC::SourceOrigin& origin); String sourceURL(JSC::SourceProvider* sourceProvider); String sourceURL(const JSC::SourceCode& sourceCode); String sourceURL(JSC::CodeBlock* codeBlock); +String sourceURL(JSC::CodeBlock& codeBlock); String sourceURL(JSC::VM& vm, const JSC::StackFrame& frame); String sourceURL(JSC::StackVisitor& visitor); String sourceURL(JSC::VM& vm, JSC::JSFunction* function); diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp index b1e82755968b57..3cb729fd1391ca 100644 --- a/src/bun.js/bindings/ZigGlobalObject.cpp +++ b/src/bun.js/bindings/ZigGlobalObject.cpp @@ -500,8 +500,10 @@ WTF::String Bun::formatStackTrace( JSC::JSGlobalObject* globalObjectForFrame = lexicalGlobalObject; if (frame.hasLineAndColumnInfo()) { auto* callee = frame.callee(); - if (auto* object = callee->getObject()) { - globalObjectForFrame = object->globalObject(); + if (callee) { + if (auto* object = callee->getObject()) { + globalObjectForFrame = object->globalObject(); + } } } diff --git a/test/bun.lockb b/test/bun.lockb index 091b3c31f83168e5fb9db45fcf446db096442d7c..fb2b70b1f290649c95defa16fe625f9258ead3ea 100755 GIT binary patch delta 45108 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 v*`4{y;9NU; => { + expect.assertions(1); + for (let i: number = 0; i < 2; ++i) { + // TODO: have a reproduction of this that doesn't depend on a 10 MB file. + const response: Response = new Response(` + + + + + +`); + const window: Window = new Window({ url: "http://youtube.com" }); + const localStorage = window.localStorage; + global.window = window; + global.document = window.document; + localStorage.clear(); + document.body.innerHTML = await response.text(); + } + + // This test passes by simply not crashing. + expect().pass(); +}); diff --git a/test/package.json b/test/package.json index 03fe468beb1527..9c9d51d496c4a6 100644 --- a/test/package.json +++ b/test/package.json @@ -30,6 +30,7 @@ "express": "4.18.2", "fast-glob": "3.3.1", "filenamify": "6.0.0", + "happy-dom": "16.5.3", "http2-wrapper": "2.2.1", "https-proxy-agent": "7.0.5", "iconv-lite": "0.6.3",