From 1af10afb722c1a5389ce77283c95e3dccec1a5c0 Mon Sep 17 00:00:00 2001 From: Zack Radisic <56137411+zackradisic@users.noreply.github.com> Date: Thu, 2 May 2024 16:53:54 +0200 Subject: [PATCH] fix bad stack traces --- src/bun.js/bindings/ZigGlobalObject.cpp | 5 +++-- src/bun.js/bindings/bindings.cpp | 9 +++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp index e57e54e3c84d83..d28902f37c8118 100644 --- a/src/bun.js/bindings/ZigGlobalObject.cpp +++ b/src/bun.js/bindings/ZigGlobalObject.cpp @@ -386,7 +386,7 @@ WTF::String Bun::formatStackTrace(JSC::VM& vm, JSC::JSGlobalObject* globalObject // "".test(/[a-0]/); auto originalLine = WTF::OrdinalNumber::fromOneBasedInt(err->line()); - ZigStackFrame remappedFrame; + ZigStackFrame remappedFrame = {}; memset(&remappedFrame, 0, sizeof(ZigStackFrame)); remappedFrame.position.line = originalLine.zeroBasedInt() + 1; @@ -467,7 +467,7 @@ WTF::String Bun::formatStackTrace(JSC::VM& vm, JSC::JSGlobalObject* globalObject LineColumn lineColumn = frame.computeLineAndColumn(); thisLine = lineColumn.line; thisColumn = lineColumn.column; - ZigStackFrame remappedFrame; + ZigStackFrame remappedFrame = {}; remappedFrame.position.line = thisLine; remappedFrame.position.column_start = thisColumn; @@ -565,6 +565,7 @@ static String computeErrorInfoWithPrepareStackTrace(JSC::VM& vm, Zig::GlobalObje size_t framesCount = stackTrace.size(); ZigStackFrame remappedFrames[framesCount]; for (int i = 0; i < framesCount; i++) { + remappedFrames[i] = {}; remappedFrames[i].source_url = Bun::toString(lexicalGlobalObject, stackTrace.at(i).sourceURL()); if (JSCStackFrame::SourcePositions* sourcePositions = stackTrace.at(i).getSourcePositions()) { remappedFrames[i].position.line = sourcePositions->line.oneBasedInt(); diff --git a/src/bun.js/bindings/bindings.cpp b/src/bun.js/bindings/bindings.cpp index 785b867d011c88..a5c3cf1b9d5174 100644 --- a/src/bun.js/bindings/bindings.cpp +++ b/src/bun.js/bindings/bindings.cpp @@ -4326,14 +4326,15 @@ static void fromErrorInstance(ZigException* except, JSC::JSGlobalObject* global, iterator.forEachFrame([&](const V8StackTraceIterator::StackFrame& frame, bool& stop) -> void { ASSERT(except->stack.frames_len < frame_count); auto& current = except->stack.frames_ptr[except->stack.frames_len]; + current = {}; String functionName = frame.functionName.toString(); String sourceURL = frame.sourceURL.toString(); current.function_name = Bun::toStringRef(functionName); current.source_url = Bun::toStringRef(sourceURL); - current.position.line = frame.lineNumber.zeroBasedInt(); - current.position.column_start = frame.columnNumber.zeroBasedInt(); - current.position.column_stop = frame.columnNumber.zeroBasedInt(); + current.position.line = frame.lineNumber.oneBasedInt(); + current.position.column_start = frame.columnNumber.oneBasedInt(); + current.position.column_stop = frame.columnNumber.oneBasedInt(); current.remapped = true; @@ -5535,4 +5536,4 @@ CPP_DECL bool JSC__CustomGetterSetter__isSetterNull(JSC__CustomGetterSetter* get CPP_DECL JSC__JSValue Bun__ProxyObject__getInternalField(JSC__JSValue value, uint32_t id) { return JSValue::encode(jsCast(JSValue::decode(value))->internalField((ProxyObject::Field)id).get()); -} \ No newline at end of file +}