mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 01:37:35 +00:00
HexEditor: Fix off-by-one bugs in selected text length calculations
find_and_highlight() selected +1 too many bytes. 'Select All' selected +1 too many bytes past the end of the buffer. Status bar 'Selected Bytes' count was off by -1 when more than zero bytes were selected.
This commit is contained in:
parent
2e23954271
commit
996f69a1b2
3 changed files with 11 additions and 3 deletions
|
@ -113,6 +113,13 @@ bool HexEditor::write_to_file(const String& path)
|
|||
return true;
|
||||
}
|
||||
|
||||
size_t HexEditor::selection_size()
|
||||
{
|
||||
if (!has_selection())
|
||||
return 0;
|
||||
return abs(m_selection_end - m_selection_start) + 1;
|
||||
}
|
||||
|
||||
bool HexEditor::copy_selected_hex_to_clipboard()
|
||||
{
|
||||
if (!has_selection())
|
||||
|
@ -561,7 +568,7 @@ void HexEditor::paint_event(GUI::PaintEvent& event)
|
|||
|
||||
void HexEditor::select_all()
|
||||
{
|
||||
highlight(0, m_buffer.size());
|
||||
highlight(0, m_buffer.size() - 1);
|
||||
set_position(0);
|
||||
}
|
||||
|
||||
|
@ -575,7 +582,7 @@ void HexEditor::highlight(int start, int end)
|
|||
int HexEditor::find_and_highlight(ByteBuffer& needle, int start)
|
||||
{
|
||||
auto end_of_match = find(needle, start);
|
||||
highlight(end_of_match - needle.size(), end_of_match);
|
||||
highlight(end_of_match - needle.size(), end_of_match - 1);
|
||||
return end_of_match;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue