Make Cursor::is_start_of_line() and Cursor::is_end_of_line() safe for empty pieces
This commit is contained in:
parent
fd6ef8cab0
commit
878b9aaf34
@ -335,17 +335,18 @@ void PieceTable::Cursor::warp_to_inserted_piece(Piece * piece)
|
||||
|
||||
bool PieceTable::Cursor::is_start_of_line()
|
||||
{
|
||||
return iterator.valid() &&
|
||||
(iterator.offset == 0u) &&
|
||||
((iterator.piece->prev == iterator.piece_table->start_piece) ||
|
||||
iterator.piece->prev->eol());
|
||||
if (!iterator.valid() || (iterator.offset > 0u))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
Iterator iterator2 = iterator;
|
||||
iterator2.go_prev_piece();
|
||||
return iterator2.piece_eol() || !iterator2.valid();
|
||||
}
|
||||
|
||||
bool PieceTable::Cursor::is_end_of_line()
|
||||
{
|
||||
return iterator.valid() &&
|
||||
((iterator.offset + iterator.num_bytes_in_code_point()) >= iterator.piece->length) &&
|
||||
(iterator.piece->eol() || (iterator.piece->next == iterator.piece_table->end_piece));
|
||||
return *iterator == INTERNAL_EOL;
|
||||
}
|
||||
|
||||
PieceTable::Piece * PieceTable::Cursor::prev_line() const
|
||||
|
Loading…
x
Reference in New Issue
Block a user