LibLine: Only print ascii characters in caret form
ctype's `iscntrl` truncates its input, making some codepoints appear as control characters. Avoid this by checking whether the character is in ascii to begin with.
This commit is contained in:
parent
521a38d9c5
commit
3b9ead985c
Notes:
sideshowbarker
2024-07-18 22:41:33 +09:00
Author: https://github.com/alimpfard Commit: https://github.com/SerenityOS/serenity/commit/3b9ead985c5 Pull-request: https://github.com/SerenityOS/serenity/pull/5204
1 changed files with 2 additions and 2 deletions
|
@ -1205,7 +1205,7 @@ void Editor::refresh_display()
|
|||
auto anchored_starts = m_anchored_spans_starting.get(i).value_or(empty_styles);
|
||||
|
||||
auto c = m_buffer[i];
|
||||
bool should_print_caret = iscntrl(c) && c != '\n';
|
||||
bool should_print_caret = isascii(c) && iscntrl(c) && c != '\n';
|
||||
|
||||
if (ends.size() || anchored_ends.size()) {
|
||||
Style style;
|
||||
|
@ -1560,7 +1560,7 @@ Editor::VTState Editor::actual_rendered_string_length_step(StringMetrics& metric
|
|||
current_line.length = 0;
|
||||
return state;
|
||||
}
|
||||
if (iscntrl(c) && c != '\n')
|
||||
if (isascii(c) && iscntrl(c) && c != '\n')
|
||||
current_line.masked_chars.append({ index, 1, 2 });
|
||||
// FIXME: This will not support anything sophisticated
|
||||
++current_line.length;
|
||||
|
|
Loading…
Add table
Reference in a new issue