mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-21 23:20:20 +00:00
Everywhere: Remove unintentional partial stream reads and writes
This commit is contained in:
parent
26516ee160
commit
ae51c1821c
Notes:
sideshowbarker
2024-07-16 22:58:18 +09:00
Author: https://github.com/timschumi Commit: https://github.com/SerenityOS/serenity/commit/ae51c1821c Pull-request: https://github.com/SerenityOS/serenity/pull/17684 Reviewed-by: https://github.com/JanDeVisser ✅ Reviewed-by: https://github.com/alimpfard Reviewed-by: https://github.com/linusg ✅
44 changed files with 109 additions and 192 deletions
|
@ -98,8 +98,7 @@ TEST_CASE(long_streams)
|
|||
u8 bytes[64] = {};
|
||||
constexpr auto test_view = "Well, hello friends"sv;
|
||||
FixedMemoryStream stream(Bytes { bytes, sizeof(bytes) });
|
||||
// FIXME: This should write the entire span.
|
||||
MUST(stream.write_some(test_view.bytes()));
|
||||
MUST(stream.write_until_depleted(test_view.bytes()));
|
||||
MUST(stream.seek(0));
|
||||
|
||||
auto string = MUST(String::from_stream(stream, test_view.length()));
|
||||
|
@ -111,8 +110,7 @@ TEST_CASE(long_streams)
|
|||
|
||||
{
|
||||
AllocatingMemoryStream stream;
|
||||
// FIXME: This should write the entire span.
|
||||
MUST(stream.write_some(("abc"sv).bytes()));
|
||||
MUST(stream.write_until_depleted(("abc"sv).bytes()));
|
||||
|
||||
auto string = MUST(String::from_stream(stream, 3u));
|
||||
|
||||
|
@ -123,8 +121,7 @@ TEST_CASE(long_streams)
|
|||
|
||||
{
|
||||
AllocatingMemoryStream stream;
|
||||
// FIXME: This should write the entire span.
|
||||
MUST(stream.write_some(("0123456789"sv).bytes()));
|
||||
MUST(stream.write_until_depleted(("0123456789"sv).bytes()));
|
||||
|
||||
auto string = MUST(String::from_stream(stream, 9u));
|
||||
|
||||
|
|
|
@ -32,8 +32,7 @@ TESTJS_GLOBAL_FUNCTION(read_binary_wasm_file, readBinaryWasmFile)
|
|||
|
||||
auto array = TRY(JS::Uint8Array::create(realm, file_size.value()));
|
||||
|
||||
// FIXME: This should read the entire span.
|
||||
auto read = file.value()->read_some(array->data());
|
||||
auto read = file.value()->read_until_filled(array->data());
|
||||
if (read.is_error())
|
||||
return vm.throw_completion<JS::TypeError>(error_code_to_string(read.error().code()));
|
||||
|
||||
|
|
|
@ -211,8 +211,7 @@ TEST_CASE(regression)
|
|||
auto file = MUST(Core::File::open(path, Core::File::OpenMode::Read));
|
||||
auto file_size = MUST(file->size());
|
||||
auto content = MUST(ByteBuffer::create_uninitialized(file_size));
|
||||
// FIXME: This should read the entire span.
|
||||
MUST(file->read_some(content.bytes()));
|
||||
MUST(file->read_until_filled(content.bytes()));
|
||||
DeprecatedString file_contents { content.bytes() };
|
||||
auto tokens = run_tokenizer(file_contents);
|
||||
u32 hash = hash_tokens(tokens);
|
||||
|
|
|
@ -775,8 +775,7 @@ ErrorOr<void> BrowserWindow::take_screenshot(ScreenshotType type)
|
|||
auto encoded = TRY(Gfx::PNGWriter::encode(*bitmap.bitmap()));
|
||||
|
||||
auto screenshot_file = TRY(Core::File::open(path.string(), Core::File::OpenMode::Write));
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(screenshot_file->write_some(encoded));
|
||||
TRY(screenshot_file->write_until_depleted(encoded));
|
||||
|
||||
return {};
|
||||
}
|
||||
|
|
|
@ -50,8 +50,7 @@ ErrorOr<void> DomainListModel::save()
|
|||
TRY(builder.try_appendff("{}\n", domain));
|
||||
|
||||
auto file = TRY(Core::File::open(filter_list_file_path(), Core::File::OpenMode::Write));
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(file->write_some(TRY(builder.to_byte_buffer()).bytes()));
|
||||
TRY(file->write_until_depleted(TRY(builder.to_byte_buffer()).bytes()));
|
||||
return {};
|
||||
}
|
||||
|
||||
|
|
|
@ -284,8 +284,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
}
|
||||
auto byte_buffer = byte_buffer_or_error.release_value();
|
||||
|
||||
// FIXME: This should write the entire span.
|
||||
if (auto result = file->write_some(byte_buffer); result.is_error())
|
||||
if (auto result = file->write_until_depleted(byte_buffer); result.is_error())
|
||||
GUI::MessageBox::show(window, DeprecatedString::formatted("Couldn't save file: {}.", result.release_error()), "Saving backtrace failed"sv, GUI::MessageBox::Type::Error);
|
||||
};
|
||||
save_backtrace_button.set_enabled(false);
|
||||
|
|
|
@ -62,12 +62,10 @@ void HexDocumentMemory::clear_changes()
|
|||
ErrorOr<void> HexDocumentMemory::write_to_file(Core::File& file)
|
||||
{
|
||||
TRY(file.seek(0, SeekMode::SetPosition));
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(file.write_some(m_buffer));
|
||||
TRY(file.write_until_depleted(m_buffer));
|
||||
for (auto& change : m_changes) {
|
||||
TRY(file.seek(change.key, SeekMode::SetPosition));
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(file.write_some({ &change.value, 1 }));
|
||||
TRY(file.write_until_depleted({ &change.value, 1 }));
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
@ -89,8 +87,7 @@ ErrorOr<void> HexDocumentFile::write_to_file()
|
|||
{
|
||||
for (auto& change : m_changes) {
|
||||
TRY(m_file->seek(change.key, SeekMode::SetPosition));
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(m_file->write_some({ &change.value, 1 }));
|
||||
TRY(m_file->write_until_depleted({ &change.value, 1 }));
|
||||
}
|
||||
clear_changes();
|
||||
// make sure the next get operation triggers a read
|
||||
|
@ -110,14 +107,12 @@ ErrorOr<void> HexDocumentFile::write_to_file(Core::File& file)
|
|||
auto copy_buffer = TRY(m_file->read_some(buffer));
|
||||
if (copy_buffer.size() == 0)
|
||||
break;
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(file.write_some(copy_buffer));
|
||||
TRY(file.write_until_depleted(copy_buffer));
|
||||
}
|
||||
|
||||
for (auto& change : m_changes) {
|
||||
TRY(file.seek(change.key, SeekMode::SetPosition));
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(file.write_some({ &change.value, 1 }));
|
||||
TRY(file.write_until_depleted({ &change.value, 1 }));
|
||||
}
|
||||
|
||||
return {};
|
||||
|
|
|
@ -191,8 +191,7 @@ ErrorOr<void> KeyboardMapperWidget::save_to_file(StringView filename)
|
|||
// Write to file.
|
||||
DeprecatedString file_content = map_json.to_deprecated_string();
|
||||
auto file = TRY(Core::File::open(filename, Core::File::OpenMode::Write));
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(file->write_some(file_content.bytes()));
|
||||
TRY(file->write_until_depleted(file_content.bytes()));
|
||||
file->close();
|
||||
|
||||
window()->set_modified(false);
|
||||
|
|
|
@ -73,8 +73,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
filename = path.basename();
|
||||
auto encoded = TRY(dump_bitmap(magnifier->current_bitmap(), path.extension()));
|
||||
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(file->write_some(encoded));
|
||||
TRY(file->write_until_depleted(encoded));
|
||||
return {};
|
||||
};
|
||||
|
||||
|
|
|
@ -187,8 +187,7 @@ ErrorOr<void> RunWindow::save_history()
|
|||
|
||||
// Write the first 25 items of history
|
||||
for (int i = 0; i < min(static_cast<int>(m_path_history.size()), 25); i++)
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(file->write_some(DeprecatedString::formatted("{}\n", m_path_history[i]).bytes()));
|
||||
TRY(file->write_until_depleted(DeprecatedString::formatted("{}\n", m_path_history[i]).bytes()));
|
||||
|
||||
return {};
|
||||
}
|
||||
|
|
|
@ -632,25 +632,24 @@ ErrorOr<void> ChessWidget::import_pgn(Core::File& file)
|
|||
ErrorOr<void> ChessWidget::export_pgn(Core::File& file) const
|
||||
{
|
||||
// Tag Pair Section
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(file.write_some("[Event \"Casual Game\"]\n"sv.bytes()));
|
||||
TRY(file.write_some("[Site \"SerenityOS Chess\"]\n"sv.bytes()));
|
||||
TRY(file.write_some(DeprecatedString::formatted("[Date \"{}\"]\n", Core::DateTime::now().to_deprecated_string("%Y.%m.%d"sv)).bytes()));
|
||||
TRY(file.write_some("[Round \"1\"]\n"sv.bytes()));
|
||||
TRY(file.write_until_depleted("[Event \"Casual Game\"]\n"sv.bytes()));
|
||||
TRY(file.write_until_depleted("[Site \"SerenityOS Chess\"]\n"sv.bytes()));
|
||||
TRY(file.write_until_depleted(DeprecatedString::formatted("[Date \"{}\"]\n", Core::DateTime::now().to_deprecated_string("%Y.%m.%d"sv)).bytes()));
|
||||
TRY(file.write_until_depleted("[Round \"1\"]\n"sv.bytes()));
|
||||
|
||||
DeprecatedString username(getlogin());
|
||||
auto const player1 = (!username.is_empty() ? username.view() : "?"sv.bytes());
|
||||
auto const player2 = (!m_engine.is_null() ? "SerenityOS ChessEngine"sv.bytes() : "?"sv.bytes());
|
||||
TRY(file.write_some(DeprecatedString::formatted("[White \"{}\"]\n", m_side == Chess::Color::White ? player1 : player2).bytes()));
|
||||
TRY(file.write_some(DeprecatedString::formatted("[Black \"{}\"]\n", m_side == Chess::Color::Black ? player1 : player2).bytes()));
|
||||
TRY(file.write_until_depleted(DeprecatedString::formatted("[White \"{}\"]\n", m_side == Chess::Color::White ? player1 : player2).bytes()));
|
||||
TRY(file.write_until_depleted(DeprecatedString::formatted("[Black \"{}\"]\n", m_side == Chess::Color::Black ? player1 : player2).bytes()));
|
||||
|
||||
TRY(file.write_some(DeprecatedString::formatted("[Result \"{}\"]\n", Chess::Board::result_to_points_string(m_board.game_result(), m_board.turn())).bytes()));
|
||||
TRY(file.write_some("[WhiteElo \"?\"]\n"sv.bytes()));
|
||||
TRY(file.write_some("[BlackElo \"?\"]\n"sv.bytes()));
|
||||
TRY(file.write_some("[Variant \"Standard\"]\n"sv.bytes()));
|
||||
TRY(file.write_some("[TimeControl \"-\"]\n"sv.bytes()));
|
||||
TRY(file.write_some("[Annotator \"SerenityOS Chess\"]\n"sv.bytes()));
|
||||
TRY(file.write_some("\n"sv.bytes()));
|
||||
TRY(file.write_until_depleted(DeprecatedString::formatted("[Result \"{}\"]\n", Chess::Board::result_to_points_string(m_board.game_result(), m_board.turn())).bytes()));
|
||||
TRY(file.write_until_depleted("[WhiteElo \"?\"]\n"sv.bytes()));
|
||||
TRY(file.write_until_depleted("[BlackElo \"?\"]\n"sv.bytes()));
|
||||
TRY(file.write_until_depleted("[Variant \"Standard\"]\n"sv.bytes()));
|
||||
TRY(file.write_until_depleted("[TimeControl \"-\"]\n"sv.bytes()));
|
||||
TRY(file.write_until_depleted("[Annotator \"SerenityOS Chess\"]\n"sv.bytes()));
|
||||
TRY(file.write_until_depleted("\n"sv.bytes()));
|
||||
|
||||
// Movetext Section
|
||||
for (size_t i = 0, move_no = 1; i < m_board.moves().size(); i += 2, move_no++) {
|
||||
|
@ -658,17 +657,17 @@ ErrorOr<void> ChessWidget::export_pgn(Core::File& file) const
|
|||
|
||||
if (i + 1 < m_board.moves().size()) {
|
||||
const DeprecatedString black = m_board.moves().at(i + 1).to_algebraic();
|
||||
TRY(file.write_some(DeprecatedString::formatted("{}. {} {} ", move_no, white, black).bytes()));
|
||||
TRY(file.write_until_depleted(DeprecatedString::formatted("{}. {} {} ", move_no, white, black).bytes()));
|
||||
} else {
|
||||
TRY(file.write_some(DeprecatedString::formatted("{}. {} ", move_no, white).bytes()));
|
||||
TRY(file.write_until_depleted(DeprecatedString::formatted("{}. {} ", move_no, white).bytes()));
|
||||
}
|
||||
}
|
||||
|
||||
TRY(file.write_some("{ "sv.bytes()));
|
||||
TRY(file.write_some(Chess::Board::result_to_string(m_board.game_result(), m_board.turn()).bytes()));
|
||||
TRY(file.write_some(" } "sv.bytes()));
|
||||
TRY(file.write_some(Chess::Board::result_to_points_string(m_board.game_result(), m_board.turn()).bytes()));
|
||||
TRY(file.write_some("\n"sv.bytes()));
|
||||
TRY(file.write_until_depleted("{ "sv.bytes()));
|
||||
TRY(file.write_until_depleted(Chess::Board::result_to_string(m_board.game_result(), m_board.turn()).bytes()));
|
||||
TRY(file.write_until_depleted(" } "sv.bytes()));
|
||||
TRY(file.write_until_depleted(Chess::Board::result_to_points_string(m_board.game_result(), m_board.turn()).bytes()));
|
||||
TRY(file.write_until_depleted("\n"sv.bytes()));
|
||||
|
||||
return {};
|
||||
}
|
||||
|
|
|
@ -233,9 +233,7 @@ ErrorOr<MP3::MP3Frame, LoaderError> MP3LoaderPlugin::read_frame_data(MP3::Header
|
|||
|
||||
size_t old_reservoir_size = m_bit_reservoir.used_buffer_size();
|
||||
LOADER_TRY(m_bitstream->read_until_filled(buffer));
|
||||
// FIXME: This should write the entire span.
|
||||
if (LOADER_TRY(m_bit_reservoir.write_some(buffer)) != header.slot_count)
|
||||
return LoaderError { LoaderError::Category::IO, m_loaded_samples, "Could not write frame into bit reservoir." };
|
||||
LOADER_TRY(m_bit_reservoir.write_until_depleted(buffer));
|
||||
|
||||
// If we don't have enough data in the reservoir to process this frame, skip it (but keep the data).
|
||||
if (old_reservoir_size < static_cast<size_t>(frame.main_data_begin))
|
||||
|
|
|
@ -225,10 +225,8 @@ ErrorOr<Bytes> DeflateDecompressor::read_some(Bytes bytes)
|
|||
if (block_type == 0b00) {
|
||||
m_input_stream->align_to_byte_boundary();
|
||||
|
||||
// FIXME: This should read the entire span.
|
||||
LittleEndian<u16> length, negated_length;
|
||||
TRY(m_input_stream->read_some(length.bytes()));
|
||||
TRY(m_input_stream->read_some(negated_length.bytes()));
|
||||
u16 length = TRY(m_input_stream->read_value<LittleEndian<u16>>());
|
||||
u16 negated_length = TRY(m_input_stream->read_value<LittleEndian<u16>>());
|
||||
|
||||
if ((length ^ 0xffff) != negated_length)
|
||||
return Error::from_string_literal("Calculated negated length does not equal stored negated length");
|
||||
|
|
|
@ -75,10 +75,8 @@ ErrorOr<Bytes> GzipDecompressor::read_some(Bytes bytes)
|
|||
current_member().m_nread += current_slice.size();
|
||||
|
||||
if (current_slice.size() < slice.size()) {
|
||||
// FIXME: This should read the entire span.
|
||||
LittleEndian<u32> crc32, input_size;
|
||||
TRY(m_input_stream->read_some(crc32.bytes()));
|
||||
TRY(m_input_stream->read_some(input_size.bytes()));
|
||||
u32 crc32 = TRY(m_input_stream->read_value<LittleEndian<u32>>());
|
||||
u32 input_size = TRY(m_input_stream->read_value<LittleEndian<u32>>());
|
||||
|
||||
if (crc32 != current_member().m_checksum.digest())
|
||||
return Error::from_string_literal("Stored CRC32 does not match the calculated CRC32 of the current member");
|
||||
|
@ -116,18 +114,16 @@ ErrorOr<Bytes> GzipDecompressor::read_some(Bytes bytes)
|
|||
return Error::from_string_literal("Header is not supported by implementation");
|
||||
|
||||
if (header.flags & Flags::FEXTRA) {
|
||||
// FIXME: This should read the entire span.
|
||||
LittleEndian<u16> subfield_id, length;
|
||||
TRY(m_input_stream->read_some(subfield_id.bytes()));
|
||||
TRY(m_input_stream->read_some(length.bytes()));
|
||||
u16 subfield_id = TRY(m_input_stream->read_value<LittleEndian<u16>>());
|
||||
u16 length = TRY(m_input_stream->read_value<LittleEndian<u16>>());
|
||||
TRY(m_input_stream->discard(length));
|
||||
(void)subfield_id;
|
||||
}
|
||||
|
||||
auto discard_string = [&]() -> ErrorOr<void> {
|
||||
char next_char;
|
||||
do {
|
||||
// FIXME: This should read the entire span.
|
||||
TRY(m_input_stream->read_some({ &next_char, sizeof(next_char) }));
|
||||
next_char = TRY(m_input_stream->read_value<char>());
|
||||
} while (next_char);
|
||||
|
||||
return {};
|
||||
|
@ -140,10 +136,9 @@ ErrorOr<Bytes> GzipDecompressor::read_some(Bytes bytes)
|
|||
TRY(discard_string());
|
||||
|
||||
if (header.flags & Flags::FHCRC) {
|
||||
// FIXME: This should read the entire span.
|
||||
LittleEndian<u16> crc16;
|
||||
TRY(m_input_stream->read_some(crc16.bytes()));
|
||||
u16 crc = TRY(m_input_stream->read_value<LittleEndian<u16>>());
|
||||
// FIXME: we should probably verify this instead of just assuming it matches
|
||||
(void)crc;
|
||||
}
|
||||
|
||||
m_current_member = TRY(Member::construct(header, *m_input_stream));
|
||||
|
|
|
@ -113,8 +113,7 @@ ErrorOr<void> ZlibCompressor::write_header(ZlibCompressionMethod compression_met
|
|||
|
||||
// FIXME: Support pre-defined dictionaries.
|
||||
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(m_output_stream->write_some(header.as_u16.bytes()));
|
||||
TRY(m_output_stream->write_until_depleted(header.as_u16.bytes()));
|
||||
|
||||
return {};
|
||||
}
|
||||
|
@ -155,8 +154,7 @@ ErrorOr<void> ZlibCompressor::finish()
|
|||
TRY(static_cast<DeflateCompressor*>(m_compressor.ptr())->final_flush());
|
||||
|
||||
NetworkOrdered<u32> adler_sum = m_adler32_checksum.digest();
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(m_output_stream->write_some(adler_sum.bytes()));
|
||||
TRY(m_output_stream->write_value(adler_sum));
|
||||
|
||||
m_finished = true;
|
||||
|
||||
|
|
|
@ -179,11 +179,10 @@ ErrorOr<void> ConfigFile::sync()
|
|||
TRY(m_file->seek(0, SeekMode::SetPosition));
|
||||
|
||||
for (auto& it : m_groups) {
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(m_file->write_some(DeprecatedString::formatted("[{}]\n", it.key).bytes()));
|
||||
TRY(m_file->write_until_depleted(DeprecatedString::formatted("[{}]\n", it.key).bytes()));
|
||||
for (auto& jt : it.value)
|
||||
TRY(m_file->write_some(DeprecatedString::formatted("{}={}\n", jt.key, jt.value).bytes()));
|
||||
TRY(m_file->write_some("\n"sv.bytes()));
|
||||
TRY(m_file->write_until_depleted(DeprecatedString::formatted("{}={}\n", jt.key, jt.value).bytes()));
|
||||
TRY(m_file->write_until_depleted("\n"sv.bytes()));
|
||||
}
|
||||
|
||||
m_dirty = false;
|
||||
|
|
|
@ -221,9 +221,7 @@ public:
|
|||
auto bytes_to_send = serialized.bytes();
|
||||
u32 length = bytes_to_send.size();
|
||||
// FIXME: Propagate errors
|
||||
// FIXME: This should write the entire span.
|
||||
auto sent = MUST(m_socket->write_some({ (u8 const*)&length, sizeof(length) }));
|
||||
VERIFY(sent == sizeof(length));
|
||||
MUST(m_socket->write_value(length));
|
||||
while (!bytes_to_send.is_empty()) {
|
||||
size_t bytes_sent = MUST(m_socket->write_some(bytes_to_send));
|
||||
bytes_to_send = bytes_to_send.slice(bytes_sent);
|
||||
|
|
|
@ -1593,9 +1593,8 @@ ErrorOr<void> TextEditor::write_to_file(Core::File& file)
|
|||
// A size 0 file doesn't need a data copy.
|
||||
} else {
|
||||
for (size_t i = 0; i < line_count(); ++i) {
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(file.write_some(line(i).to_utf8().bytes()));
|
||||
TRY(file.write_some("\n"sv.bytes()));
|
||||
TRY(file.write_until_depleted(line(i).to_utf8().bytes()));
|
||||
TRY(file.write_until_depleted("\n"sv.bytes()));
|
||||
}
|
||||
}
|
||||
document().set_unmodified();
|
||||
|
|
|
@ -60,8 +60,7 @@ ErrorOr<void> Client::on_ready_to_receive()
|
|||
|
||||
auto pending_bytes = TRY(m_socket->pending_bytes());
|
||||
auto receive_buffer = TRY(m_buffer.get_bytes_for_writing(pending_bytes));
|
||||
// FIXME: This should read the entire span.
|
||||
TRY(m_socket->read_some(receive_buffer));
|
||||
TRY(m_socket->read_until_filled(receive_buffer));
|
||||
|
||||
// Once we get server hello we can start sending.
|
||||
if (m_connect_pending) {
|
||||
|
@ -146,9 +145,8 @@ static ReadonlyBytes command_byte_buffer(CommandType command)
|
|||
|
||||
ErrorOr<void> Client::send_raw(StringView data)
|
||||
{
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(m_socket->write_some(data.bytes()));
|
||||
TRY(m_socket->write_some("\r\n"sv.bytes()));
|
||||
TRY(m_socket->write_until_depleted(data.bytes()));
|
||||
TRY(m_socket->write_until_depleted("\r\n"sv.bytes()));
|
||||
|
||||
return {};
|
||||
}
|
||||
|
|
|
@ -680,8 +680,7 @@ ThrowCompletionOr<String> ConsoleClient::generically_format_values(MarkedVector<
|
|||
bool first = true;
|
||||
for (auto const& value : values) {
|
||||
if (!first)
|
||||
// FIXME: This should write the entire span.
|
||||
TRY_OR_THROW_OOM(vm, stream.write_some(" "sv.bytes()));
|
||||
TRY_OR_THROW_OOM(vm, stream.write_until_depleted(" "sv.bytes()));
|
||||
TRY_OR_THROW_OOM(vm, JS::print(value, ctx));
|
||||
first = false;
|
||||
}
|
||||
|
|
|
@ -51,8 +51,7 @@ ErrorOr<void> XtermSuggestionDisplay::display(SuggestionManager const& manager)
|
|||
// the suggestion list to fit in the prompt line.
|
||||
auto start = max_line_count - m_prompt_lines_at_suggestion_initiation;
|
||||
for (size_t i = start; i < max_line_count; ++i)
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(stderr_stream->write_some("\n"sv.bytes()));
|
||||
TRY(stderr_stream->write_until_depleted("\n"sv.bytes()));
|
||||
lines_used += max_line_count;
|
||||
longest_suggestion_length = 0;
|
||||
}
|
||||
|
@ -100,8 +99,7 @@ ErrorOr<void> XtermSuggestionDisplay::display(SuggestionManager const& manager)
|
|||
if (next_column > m_num_columns) {
|
||||
auto lines = (suggestion.text_view.length() + m_num_columns - 1) / m_num_columns;
|
||||
lines_used += lines;
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(stderr_stream->write_some("\n"sv.bytes()));
|
||||
TRY(stderr_stream->write_until_depleted("\n"sv.bytes()));
|
||||
num_printed = 0;
|
||||
}
|
||||
|
||||
|
@ -117,13 +115,11 @@ ErrorOr<void> XtermSuggestionDisplay::display(SuggestionManager const& manager)
|
|||
|
||||
if (spans_entire_line) {
|
||||
num_printed += m_num_columns;
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(stderr_stream->write_some(suggestion.text_string.bytes()));
|
||||
TRY(stderr_stream->write_some(suggestion.display_trivia_string.bytes()));
|
||||
TRY(stderr_stream->write_until_depleted(suggestion.text_string.bytes()));
|
||||
TRY(stderr_stream->write_until_depleted(suggestion.display_trivia_string.bytes()));
|
||||
} else {
|
||||
auto field = DeprecatedString::formatted("{: <{}} {}", suggestion.text_string, longest_suggestion_byte_length_without_trivia, suggestion.display_trivia_string);
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(stderr_stream->write_some(DeprecatedString::formatted("{: <{}}", field, longest_suggestion_byte_length + 2).bytes()));
|
||||
TRY(stderr_stream->write_until_depleted(DeprecatedString::formatted("{: <{}}", field, longest_suggestion_byte_length + 2).bytes()));
|
||||
num_printed += longest_suggestion_length + 2;
|
||||
}
|
||||
|
||||
|
@ -154,8 +150,7 @@ ErrorOr<void> XtermSuggestionDisplay::display(SuggestionManager const& manager)
|
|||
|
||||
TRY(VT::move_absolute(m_origin_row + lines_used, m_num_columns - string.length() - 1, *stderr_stream));
|
||||
TRY(VT::apply_style({ Style::Background(Style::XtermColor::Green) }, *stderr_stream));
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(stderr_stream->write_some(string.bytes()));
|
||||
TRY(stderr_stream->write_until_depleted(string.bytes()));
|
||||
TRY(VT::apply_style(Style::reset_style(), *stderr_stream));
|
||||
}
|
||||
|
||||
|
|
|
@ -67,8 +67,7 @@ static ErrorOr<void> launch_server(DeprecatedString const& socket_path, Deprecat
|
|||
|
||||
if (server_pid != 0) {
|
||||
auto server_pid_file = TRY(Core::File::open(pid_path, Core::File::OpenMode::Write));
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(server_pid_file->write_some(DeprecatedString::number(server_pid).bytes()));
|
||||
TRY(server_pid_file->write_until_depleted(DeprecatedString::number(server_pid).bytes()));
|
||||
|
||||
TRY(Core::System::kill(getpid(), SIGTERM));
|
||||
}
|
||||
|
|
|
@ -220,8 +220,7 @@ inline ByteBuffer load_entire_file(StringView path)
|
|||
auto file = TRY(Core::File::open(path, Core::File::OpenMode::Read));
|
||||
auto file_size = TRY(file->size());
|
||||
auto content = TRY(ByteBuffer::create_uninitialized(file_size));
|
||||
// FIXME: This should read the entire span.
|
||||
TRY(file->read_some(content.bytes()));
|
||||
TRY(file->read_until_filled(content.bytes()));
|
||||
return content;
|
||||
};
|
||||
|
||||
|
|
|
@ -279,8 +279,7 @@ ErrorOr<void, Client::WrappedError> Client::send_success_response(JsonValue resu
|
|||
builder.append("\r\n"sv);
|
||||
|
||||
auto builder_contents = TRY(builder.to_byte_buffer());
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(m_socket->write_some(builder_contents));
|
||||
TRY(m_socket->write_until_depleted(builder_contents));
|
||||
|
||||
while (!content.is_empty()) {
|
||||
auto bytes_sent = TRY(m_socket->write_some(content.bytes()));
|
||||
|
@ -320,9 +319,8 @@ ErrorOr<void, Client::WrappedError> Client::send_error_response(Error const& err
|
|||
header_builder.appendff("Content-Length: {}\r\n", content_builder.length());
|
||||
header_builder.append("\r\n"sv);
|
||||
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(m_socket->write_some(TRY(header_builder.to_byte_buffer())));
|
||||
TRY(m_socket->write_some(TRY(content_builder.to_byte_buffer())));
|
||||
TRY(m_socket->write_until_depleted(TRY(header_builder.to_byte_buffer())));
|
||||
TRY(m_socket->write_until_depleted(TRY(content_builder.to_byte_buffer())));
|
||||
|
||||
log_response(error.http_status);
|
||||
return {};
|
||||
|
|
|
@ -40,8 +40,7 @@ ErrorOr<void> Client::drain_socket()
|
|||
break;
|
||||
}
|
||||
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(m_socket->write_some(bytes_read));
|
||||
TRY(m_socket->write_until_depleted(bytes_read));
|
||||
}
|
||||
|
||||
return {};
|
||||
|
|
|
@ -240,8 +240,7 @@ ErrorOr<int> execute_work_items(Vector<WorkItem> const& items)
|
|||
auto bytes_read = TRY(source_file->read_some(buffer.bytes()));
|
||||
if (bytes_read.is_empty())
|
||||
break;
|
||||
// FIXME: This should write the entire span.
|
||||
if (auto result = destination_file->write_some(bytes_read); result.is_error()) {
|
||||
if (auto result = destination_file->write_until_depleted(bytes_read); result.is_error()) {
|
||||
// FIXME: Return the formatted string directly. There is no way to do this right now without the temporary going out of scope and being destroyed.
|
||||
report_warning(DeprecatedString::formatted("Failed to write to destination file: {}", result.error()));
|
||||
return result.release_error();
|
||||
|
|
|
@ -26,9 +26,8 @@ InspectableProcess::InspectableProcess(pid_t pid, NonnullOwnPtr<Core::LocalSocke
|
|||
MUST(m_socket->set_blocking(true));
|
||||
|
||||
m_socket->on_ready_to_read = [this] {
|
||||
char c;
|
||||
// FIXME: This should read the entire span.
|
||||
[[maybe_unused]] auto buffer = m_socket->read_some({ &c, 1 });
|
||||
[[maybe_unused]] auto c = m_socket->read_value<char>().release_value_but_fixme_should_propagate_errors();
|
||||
|
||||
if (m_socket->is_eof()) {
|
||||
Core::deferred_invoke([pid = this->m_pid] { g_processes.remove(pid); });
|
||||
return;
|
||||
|
@ -44,14 +43,7 @@ DeprecatedString InspectableProcess::wait_for_response()
|
|||
return {};
|
||||
}
|
||||
|
||||
u32 length {};
|
||||
// FIXME: This should read the entire span.
|
||||
auto length_bytes_read = m_socket->read_some({ (u8*)&length, sizeof(length) }).release_value_but_fixme_should_propagate_errors();
|
||||
if (length_bytes_read.size() != sizeof(length)) {
|
||||
dbgln("InspectableProcess got malformed data: PID {}", m_pid);
|
||||
m_socket->close();
|
||||
return {};
|
||||
}
|
||||
auto length = m_socket->read_value<u32>().release_value_but_fixme_should_propagate_errors();
|
||||
|
||||
auto data_buffer = ByteBuffer::create_uninitialized(length).release_value_but_fixme_should_propagate_errors();
|
||||
auto remaining_data_buffer = data_buffer.bytes();
|
||||
|
@ -82,9 +74,8 @@ void InspectableProcess::send_request(JsonObject const& request)
|
|||
u32 length = serialized.length();
|
||||
|
||||
// FIXME: Propagate errors
|
||||
// FIXME: This should write the entire span.
|
||||
MUST(m_socket->write_some({ (u8 const*)&length, sizeof(length) }));
|
||||
MUST(m_socket->write_some(serialized.bytes()));
|
||||
MUST(m_socket->write_value(length));
|
||||
MUST(m_socket->write_until_depleted(serialized.bytes()));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -239,8 +239,7 @@ ErrorOr<Vector<Answer>> LookupServer::lookup(Name const& name, DeprecatedString
|
|||
auto udp_socket = TRY(Core::UDPSocket::connect(nameserver, 53, Time::from_seconds(1)));
|
||||
TRY(udp_socket->set_blocking(true));
|
||||
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(udp_socket->write_some(buffer));
|
||||
TRY(udp_socket->write_until_depleted(buffer));
|
||||
|
||||
u8 response_buffer[4096];
|
||||
int nrecv = TRY(udp_socket->read_some({ response_buffer, sizeof(response_buffer) })).size();
|
||||
|
|
|
@ -161,8 +161,7 @@ ErrorOr<void> Client::send_data(StringView data)
|
|||
}
|
||||
|
||||
if (fast) {
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(m_socket->write_some({ data.characters_without_null_termination(), data.length() }));
|
||||
TRY(m_socket->write_until_depleted({ data.characters_without_null_termination(), data.length() }));
|
||||
return {};
|
||||
}
|
||||
|
||||
|
@ -184,8 +183,7 @@ ErrorOr<void> Client::send_data(StringView data)
|
|||
}
|
||||
|
||||
auto builder_contents = TRY(builder.to_byte_buffer());
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(m_socket->write_some(builder_contents));
|
||||
TRY(m_socket->write_until_depleted(builder_contents));
|
||||
return {};
|
||||
}
|
||||
|
||||
|
@ -206,8 +204,7 @@ ErrorOr<void> Client::send_commands(Vector<Command> commands)
|
|||
}
|
||||
|
||||
VERIFY(TRY(stream.tell()) == buffer.size());
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(m_socket->write_some({ buffer.data(), buffer.size() }));
|
||||
TRY(m_socket->write_until_depleted({ buffer.data(), buffer.size() }));
|
||||
return {};
|
||||
}
|
||||
|
||||
|
|
|
@ -192,8 +192,7 @@ ErrorOr<void> Client::send_response(Stream& response, HTTP::HttpRequest const& r
|
|||
builder.append("\r\n"sv);
|
||||
|
||||
auto builder_contents = TRY(builder.to_byte_buffer());
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(m_socket->write_some(builder_contents));
|
||||
TRY(m_socket->write_until_depleted(builder_contents));
|
||||
log_response(200, request);
|
||||
|
||||
char buffer[PAGE_SIZE];
|
||||
|
@ -235,8 +234,7 @@ ErrorOr<void> Client::send_redirect(StringView redirect_path, HTTP::HttpRequest
|
|||
builder.append("\r\n"sv);
|
||||
|
||||
auto builder_contents = TRY(builder.to_byte_buffer());
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(m_socket->write_some(builder_contents));
|
||||
TRY(m_socket->write_until_depleted(builder_contents));
|
||||
|
||||
log_response(301, request);
|
||||
return {};
|
||||
|
@ -365,9 +363,8 @@ ErrorOr<void> Client::send_error_response(unsigned code, HTTP::HttpRequest const
|
|||
header_builder.append("Content-Type: text/html; charset=UTF-8\r\n"sv);
|
||||
header_builder.appendff("Content-Length: {}\r\n", content_builder.length());
|
||||
header_builder.append("\r\n"sv);
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(m_socket->write_some(TRY(header_builder.to_byte_buffer())));
|
||||
TRY(m_socket->write_some(TRY(content_builder.to_byte_buffer())));
|
||||
TRY(m_socket->write_until_depleted(TRY(header_builder.to_byte_buffer())));
|
||||
TRY(m_socket->write_until_depleted(TRY(content_builder.to_byte_buffer())));
|
||||
|
||||
log_response(code, request);
|
||||
return {};
|
||||
|
|
|
@ -28,8 +28,7 @@ static ErrorOr<bool> format_file(StringView path, bool inplace)
|
|||
return true;
|
||||
TRY(file->seek(0, SeekMode::SetPosition));
|
||||
TRY(file->truncate(0));
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(file->write_some(formatted_gml.bytes()));
|
||||
TRY(file->write_until_depleted(formatted_gml.bytes()));
|
||||
} else {
|
||||
out("{}", formatted_gml);
|
||||
}
|
||||
|
|
|
@ -174,8 +174,7 @@ static ErrorOr<NonnullRefPtr<Core::Timer>> load_page_for_screenshot_and_exit(Cor
|
|||
|
||||
auto output_file = MUST(Core::File::open(output_file_path, Core::File::OpenMode::Write));
|
||||
auto image_buffer = MUST(Gfx::PNGWriter::encode(*screenshot));
|
||||
// FIXME: This should write the entire buffer.
|
||||
MUST(output_file->write_some(image_buffer.bytes()));
|
||||
MUST(output_file->write_until_depleted(image_buffer.bytes()));
|
||||
} else {
|
||||
warnln("No screenshot available");
|
||||
}
|
||||
|
|
|
@ -188,8 +188,7 @@ static ErrorOr<void> write_to_file(String const& path)
|
|||
for (size_t i = 0; i < g_repl_statements.size(); i++) {
|
||||
auto line = g_repl_statements[i].bytes();
|
||||
if (line.size() > 0 && i != g_repl_statements.size() - 1) {
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(file->write_some(line));
|
||||
TRY(file->write_until_depleted(line));
|
||||
}
|
||||
if (i != g_repl_statements.size() - 1) {
|
||||
TRY(file->write_value('\n'));
|
||||
|
|
|
@ -82,8 +82,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
auto nread = TRY(Core::System::read(STDIN_FILENO, buffer_span));
|
||||
buffer_span = buffer_span.trim(nread);
|
||||
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(socket->write_some({ buffer_span.data(), static_cast<size_t>(nread) }));
|
||||
TRY(socket->write_until_depleted({ buffer_span.data(), static_cast<size_t>(nread) }));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -14,8 +14,7 @@ ErrorOr<int> serenity_main(Main::Arguments)
|
|||
auto file = TRY(Core::File::open("/sys/kernel/power_state"sv, Core::File::OpenMode::Write));
|
||||
|
||||
const DeprecatedString file_contents = "1";
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(file->write_some(file_contents.bytes()));
|
||||
TRY(file->write_until_depleted(file_contents.bytes()));
|
||||
file->close();
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -141,9 +141,8 @@ ErrorOr<int> serenity_main(Main::Arguments args)
|
|||
|
||||
if (maybe_output_file.has_value()) {
|
||||
auto const& output_file = maybe_output_file.value();
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(output_file->write_some(result.bytes()));
|
||||
TRY(output_file->write_some("\n"sv.bytes()));
|
||||
TRY(output_file->write_until_depleted(result.bytes()));
|
||||
TRY(output_file->write_until_depleted("\n"sv.bytes()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -167,8 +167,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
}
|
||||
|
||||
auto& file = *file_or_error.value();
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(file.write_some(encoded_bitmap.bytes()));
|
||||
TRY(file.write_until_depleted(encoded_bitmap.bytes()));
|
||||
|
||||
if (edit_image)
|
||||
TRY(Core::Process::spawn("/bin/PixelPaint"sv, Array { output_path }));
|
||||
|
|
|
@ -18,8 +18,7 @@ ErrorOr<int> serenity_main(Main::Arguments)
|
|||
auto file = TRY(Core::File::open("/sys/kernel/power_state"sv, Core::File::OpenMode::Write));
|
||||
|
||||
const DeprecatedString file_contents = "2";
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(file->write_some(file_contents.bytes()));
|
||||
TRY(file->write_until_depleted(file_contents.bytes()));
|
||||
file->close();
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -932,7 +932,6 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
FormattedSyscallBuilder builder(syscall_name);
|
||||
TRY(format_syscall(builder, syscall_function, arg1, arg2, arg3, res));
|
||||
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(trace_file->write_some(builder.string_view().bytes()));
|
||||
TRY(trace_file->write_until_depleted(builder.string_view().bytes()));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -48,8 +48,7 @@ static bool write_variable(StringView name, StringView value)
|
|||
warnln("Failed to open {}: {}", path, file.error());
|
||||
return false;
|
||||
}
|
||||
// FIXME: This should write the entire span.
|
||||
if (auto result = file.value()->write_some(value.bytes()); result.is_error()) {
|
||||
if (auto result = file.value()->write_until_depleted(value.bytes()); result.is_error()) {
|
||||
warnln("Failed to write {}: {}", path, result.error());
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -34,10 +34,8 @@ static ErrorOr<off_t> find_seek_pos(Core::File& file, int wanted_lines)
|
|||
|
||||
if (file.is_eof())
|
||||
break;
|
||||
Array<u8, 1> buffer;
|
||||
// FIXME: This should read the entire span.
|
||||
auto ch = TRY(file.read_some(buffer));
|
||||
if (*ch.data() == '\n' && (end - pos) > 1) {
|
||||
auto ch = TRY(file.read_value<u8>());
|
||||
if (ch == '\n' && (end - pos) > 1) {
|
||||
lines++;
|
||||
if (lines == wanted_lines)
|
||||
break;
|
||||
|
|
|
@ -17,11 +17,10 @@ static ErrorOr<void> write_line_content(StringView line, size_t count, bool dupl
|
|||
if (duplicates_only && count <= 1)
|
||||
return {};
|
||||
|
||||
// FIXME: This should write the entire span.
|
||||
if (print_count)
|
||||
TRY(outfile.write_some(DeprecatedString::formatted("{} {}\n", count, line).bytes()));
|
||||
TRY(outfile.write_until_depleted(DeprecatedString::formatted("{} {}\n", count, line).bytes()));
|
||||
else
|
||||
TRY(outfile.write_some(DeprecatedString::formatted("{}\n", line).bytes()));
|
||||
TRY(outfile.write_until_depleted(DeprecatedString::formatted("{}\n", line).bytes()));
|
||||
return {};
|
||||
}
|
||||
|
||||
|
|
|
@ -72,8 +72,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
|
||||
TRY(file->seek(0, SeekMode::SetPosition));
|
||||
TRY(file->truncate(0));
|
||||
// FIXME: This should write the entire span.
|
||||
TRY(file->write_some(json.to_deprecated_string().bytes()));
|
||||
TRY(file->write_until_depleted(json.to_deprecated_string().bytes()));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -53,14 +53,12 @@ static bool pre_interpret_hook(Wasm::Configuration& config, Wasm::InstructionPoi
|
|||
if (always_print_stack)
|
||||
config.dump_stack();
|
||||
if (always_print_instruction) {
|
||||
// FIXME: This should write the entire span.
|
||||
g_stdout->write_some(DeprecatedString::formatted("{:0>4} ", ip.value()).bytes()).release_value_but_fixme_should_propagate_errors();
|
||||
g_stdout->write_until_depleted(DeprecatedString::formatted("{:0>4} ", ip.value()).bytes()).release_value_but_fixme_should_propagate_errors();
|
||||
g_printer->print(instr);
|
||||
}
|
||||
if (g_continue)
|
||||
return true;
|
||||
// FIXME: This should write the entire span.
|
||||
g_stdout->write_some(DeprecatedString::formatted("{:0>4} ", ip.value()).bytes()).release_value_but_fixme_should_propagate_errors();
|
||||
g_stdout->write_until_depleted(DeprecatedString::formatted("{:0>4} ", ip.value()).bytes()).release_value_but_fixme_should_propagate_errors();
|
||||
g_printer->print(instr);
|
||||
DeprecatedString last_command = "";
|
||||
for (;;) {
|
||||
|
@ -216,8 +214,7 @@ static bool pre_interpret_hook(Wasm::Configuration& config, Wasm::InstructionPoi
|
|||
if (!result.values().is_empty())
|
||||
warnln("Returned:");
|
||||
for (auto& value : result.values()) {
|
||||
// FIXME: This should write the entire span.
|
||||
g_stdout->write_some(" -> "sv.bytes()).release_value_but_fixme_should_propagate_errors();
|
||||
g_stdout->write_until_depleted(" -> "sv.bytes()).release_value_but_fixme_should_propagate_errors();
|
||||
g_printer->print(value);
|
||||
}
|
||||
}
|
||||
|
@ -457,18 +454,15 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
|
||||
auto print_func = [&](auto const& address) {
|
||||
Wasm::FunctionInstance* fn = machine.store().get(address);
|
||||
// FIXME: This should write the entire span.
|
||||
g_stdout->write_some(DeprecatedString::formatted("- Function with address {}, ptr = {}\n", address.value(), fn).bytes()).release_value_but_fixme_should_propagate_errors();
|
||||
g_stdout->write_until_depleted(DeprecatedString::formatted("- Function with address {}, ptr = {}\n", address.value(), fn).bytes()).release_value_but_fixme_should_propagate_errors();
|
||||
if (fn) {
|
||||
// FIXME: This should write the entire span.
|
||||
g_stdout->write_some(DeprecatedString::formatted(" wasm function? {}\n", fn->has<Wasm::WasmFunction>()).bytes()).release_value_but_fixme_should_propagate_errors();
|
||||
g_stdout->write_until_depleted(DeprecatedString::formatted(" wasm function? {}\n", fn->has<Wasm::WasmFunction>()).bytes()).release_value_but_fixme_should_propagate_errors();
|
||||
fn->visit(
|
||||
[&](Wasm::WasmFunction const& func) {
|
||||
Wasm::Printer printer { *g_stdout, 3 };
|
||||
// FIXME: This should write the entire span.
|
||||
g_stdout->write_some(" type:\n"sv.bytes()).release_value_but_fixme_should_propagate_errors();
|
||||
g_stdout->write_until_depleted(" type:\n"sv.bytes()).release_value_but_fixme_should_propagate_errors();
|
||||
printer.print(func.type());
|
||||
g_stdout->write_some(" code:\n"sv.bytes()).release_value_but_fixme_should_propagate_errors();
|
||||
g_stdout->write_until_depleted(" code:\n"sv.bytes()).release_value_but_fixme_should_propagate_errors();
|
||||
printer.print(func.code());
|
||||
},
|
||||
[](Wasm::HostFunction const&) {});
|
||||
|
@ -532,8 +526,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
if (!result.values().is_empty())
|
||||
warnln("Returned:");
|
||||
for (auto& value : result.values()) {
|
||||
// FIXME: This should write the entire span.
|
||||
g_stdout->write_some(" -> "sv.bytes()).release_value_but_fixme_should_propagate_errors();
|
||||
g_stdout->write_until_depleted(" -> "sv.bytes()).release_value_but_fixme_should_propagate_errors();
|
||||
g_printer->print(value);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue