diff --git a/Userland/Libraries/LibLine/Editor.cpp b/Userland/Libraries/LibLine/Editor.cpp index 6d3dc37fcd..dd94f29733 100644 --- a/Userland/Libraries/LibLine/Editor.cpp +++ b/Userland/Libraries/LibLine/Editor.cpp @@ -384,7 +384,7 @@ void Editor::insert(StringView string_view) insert(ch); } -void Editor::insert(const u32 cp) +void Editor::insert(u32 const cp) { StringBuilder builder; builder.append(Utf32View(&cp, 1)); @@ -842,7 +842,7 @@ ErrorOr Editor::handle_read_event() auto prohibit_scope = prohibit_input(); - char keybuf[16]; + char keybuf[1024]; ssize_t nread = 0; if (!m_incomplete_data.size()) @@ -1235,10 +1235,11 @@ ErrorOr Editor::handle_read_event() insert(code_point); } - if (consumed_code_points == m_incomplete_data.size()) { + if (consumed_code_points == valid_bytes) { m_incomplete_data.clear(); } else { - for (size_t i = 0; i < consumed_code_points; ++i) + auto bytes_to_drop = input_view.byte_offset_of(consumed_code_points + 1); + for (size_t i = 0; i < bytes_to_drop; ++i) m_incomplete_data.take_first(); }