diff --git a/Userland/Libraries/LibVT/Terminal.cpp b/Userland/Libraries/LibVT/Terminal.cpp index 5bcc978535..7454fdc6fa 100644 --- a/Userland/Libraries/LibVT/Terminal.cpp +++ b/Userland/Libraries/LibVT/Terminal.cpp @@ -975,7 +975,9 @@ void Terminal::DSR(Parameters params) emit_string("\033[0n"); // Terminal status OK! } else if (params.size() == 1 && params[0] == 6) { // Cursor position query - emit_string(String::formatted("\e[{};{}R", cursor_row() + 1, cursor_column() + 1)); + StringBuilder builder; + MUST(builder.try_appendff("\e[{};{}R", cursor_row() + 1, cursor_column() + 1)); // StringBuilder's inline capacity of 256 is enough to guarantee no allocations + emit_string(builder.string_view()); } else { dbgln("Unknown DSR"); } @@ -1344,16 +1346,20 @@ void Terminal::handle_key_press(KeyCode key, u32 code_point, u8 flags) auto emit_final_with_modifier = [this, modifier_mask](char final) { char escape_character = m_cursor_keys_mode == CursorKeysMode::Application ? 'O' : '['; + StringBuilder builder; if (modifier_mask) - emit_string(String::formatted("\e{}1;{}{:c}", escape_character, modifier_mask + 1, final)); + MUST(builder.try_appendff("\e{}1;{}{:c}", escape_character, modifier_mask + 1, final)); // StringBuilder's inline capacity of 256 is enough to guarantee no allocations else - emit_string(String::formatted("\e{}{:c}", escape_character, final)); + MUST(builder.try_appendff("\e{}{:c}", escape_character, final)); // StringBuilder's inline capacity of 256 is enough to guarantee no allocations + emit_string(builder.string_view()); }; auto emit_tilde_with_modifier = [this, modifier_mask](unsigned num) { + StringBuilder builder; if (modifier_mask) - emit_string(String::formatted("\e[{};{}~", num, modifier_mask + 1)); + MUST(builder.try_appendff("\e[{};{}~", num, modifier_mask + 1)); // StringBuilder's inline capacity of 256 is enough to guarantee no allocations else - emit_string(String::formatted("\e[{}~", num)); + MUST(builder.try_appendff("\e[{}~", num)); // StringBuilder's inline capacity of 256 is enough to guarantee no allocations + emit_string(builder.string_view()); }; switch (key) {