diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/bun.js/bindings/JSSink.cpp | 56 | ||||
-rw-r--r-- | src/bun.js/scripts/generate-jssink.js | 16 | ||||
-rw-r--r-- | src/sourcemap/sourcemap.zig | 4 |
3 files changed, 43 insertions, 33 deletions
diff --git a/src/bun.js/bindings/JSSink.cpp b/src/bun.js/bindings/JSSink.cpp index d986ae590..e0abede33 100644 --- a/src/bun.js/bindings/JSSink.cpp +++ b/src/bun.js/bindings/JSSink.cpp @@ -798,17 +798,19 @@ void JSReadableArrayBufferSinkController::detach() auto readableStream = m_weakReadableStream.get(); auto onClose = m_onClose.get(); - m_onClose.clear(); if (readableStream && onClose) { - JSC::JSGlobalObject* globalObject = this->globalObject(); auto callData = JSC::getCallData(onClose); - JSC::MarkedArgumentBuffer arguments; - arguments.append(readableStream); - arguments.append(jsUndefined()); - call(globalObject, onClose, callData, JSC::jsUndefined(), arguments); + if (callData.type != JSC::CallData::Type::None) { + JSC::JSGlobalObject* globalObject = this->globalObject(); + JSC::MarkedArgumentBuffer arguments; + arguments.append(readableStream); + arguments.append(jsUndefined()); + call(globalObject, onClose, callData, JSC::jsUndefined(), arguments); + } } + m_onClose.clear(); m_weakReadableStream.clear(); } @@ -1052,17 +1054,19 @@ void JSReadableFileSinkController::detach() auto readableStream = m_weakReadableStream.get(); auto onClose = m_onClose.get(); - m_onClose.clear(); if (readableStream && onClose) { - JSC::JSGlobalObject* globalObject = this->globalObject(); auto callData = JSC::getCallData(onClose); - JSC::MarkedArgumentBuffer arguments; - arguments.append(readableStream); - arguments.append(jsUndefined()); - call(globalObject, onClose, callData, JSC::jsUndefined(), arguments); + if (callData.type != JSC::CallData::Type::None) { + JSC::JSGlobalObject* globalObject = this->globalObject(); + JSC::MarkedArgumentBuffer arguments; + arguments.append(readableStream); + arguments.append(jsUndefined()); + call(globalObject, onClose, callData, JSC::jsUndefined(), arguments); + } } + m_onClose.clear(); m_weakReadableStream.clear(); } @@ -1306,17 +1310,19 @@ void JSReadableHTTPResponseSinkController::detach() auto readableStream = m_weakReadableStream.get(); auto onClose = m_onClose.get(); - m_onClose.clear(); if (readableStream && onClose) { - JSC::JSGlobalObject* globalObject = this->globalObject(); auto callData = JSC::getCallData(onClose); - JSC::MarkedArgumentBuffer arguments; - arguments.append(readableStream); - arguments.append(jsUndefined()); - call(globalObject, onClose, callData, JSC::jsUndefined(), arguments); + if (callData.type != JSC::CallData::Type::None) { + JSC::JSGlobalObject* globalObject = this->globalObject(); + JSC::MarkedArgumentBuffer arguments; + arguments.append(readableStream); + arguments.append(jsUndefined()); + call(globalObject, onClose, callData, JSC::jsUndefined(), arguments); + } } + m_onClose.clear(); m_weakReadableStream.clear(); } @@ -1560,17 +1566,19 @@ void JSReadableHTTPSResponseSinkController::detach() auto readableStream = m_weakReadableStream.get(); auto onClose = m_onClose.get(); - m_onClose.clear(); if (readableStream && onClose) { - JSC::JSGlobalObject* globalObject = this->globalObject(); auto callData = JSC::getCallData(onClose); - JSC::MarkedArgumentBuffer arguments; - arguments.append(readableStream); - arguments.append(jsUndefined()); - call(globalObject, onClose, callData, JSC::jsUndefined(), arguments); + if (callData.type != JSC::CallData::Type::None) { + JSC::JSGlobalObject* globalObject = this->globalObject(); + JSC::MarkedArgumentBuffer arguments; + arguments.append(readableStream); + arguments.append(jsUndefined()); + call(globalObject, onClose, callData, JSC::jsUndefined(), arguments); + } } + m_onClose.clear(); m_weakReadableStream.clear(); } diff --git a/src/bun.js/scripts/generate-jssink.js b/src/bun.js/scripts/generate-jssink.js index ef60efbba..93bf842c4 100644 --- a/src/bun.js/scripts/generate-jssink.js +++ b/src/bun.js/scripts/generate-jssink.js @@ -636,17 +636,19 @@ void JS${controllerName}::detach() { auto readableStream = m_weakReadableStream.get(); auto onClose = m_onClose.get(); - m_onClose.clear(); if (readableStream && onClose) { - JSC::JSGlobalObject *globalObject = this->globalObject(); auto callData = JSC::getCallData(onClose); - JSC::MarkedArgumentBuffer arguments; - arguments.append(readableStream); - arguments.append(jsUndefined()); - call(globalObject, onClose, callData, JSC::jsUndefined(), arguments); + if(callData.type != JSC::CallData::Type::None) { + JSC::JSGlobalObject *globalObject = this->globalObject(); + JSC::MarkedArgumentBuffer arguments; + arguments.append(readableStream); + arguments.append(jsUndefined()); + call(globalObject, onClose, callData, JSC::jsUndefined(), arguments); + } } - + + m_onClose.clear(); m_weakReadableStream.clear(); } `; diff --git a/src/sourcemap/sourcemap.zig b/src/sourcemap/sourcemap.zig index 411e8523d..a274c0d94 100644 --- a/src/sourcemap/sourcemap.zig +++ b/src/sourcemap/sourcemap.zig @@ -940,7 +940,7 @@ pub const LineOffsetTable = struct { contents.ptr, )) - line_byte_offset), ); - byte_offset_to_first_non_ascii = line_byte_offset; + byte_offset_to_first_non_ascii = column_byte_offset; } // Update the per-byte column offsets @@ -1405,7 +1405,7 @@ pub const Chunk = struct { // Use the line to compute the column var original_column = loc.start - @as(i32, @intCast(line.byte_offset_to_start_of_line)); if (line.columns_for_non_ascii.len > 0 and original_column >= @as(i32, @intCast(line.byte_offset_to_first_non_ascii))) { - original_column = line.columns_for_non_ascii.ptr[@as(u32, @intCast(original_column)) - line.byte_offset_to_first_non_ascii]; + original_column = line.columns_for_non_ascii.slice()[@as(u32, @intCast(original_column)) - line.byte_offset_to_first_non_ascii]; } b.updateGeneratedLineAndColumn(output); |