diff --git a/src/core/PieceTable.cc b/src/core/PieceTable.cc index 9f44107..3ecb5c8 100644 --- a/src/core/PieceTable.cc +++ b/src/core/PieceTable.cc @@ -124,6 +124,8 @@ PieceTable::Cursor::Cursor(PieceTable * pt) : iterator(pt) bool PieceTable::Cursor::go_start_of_line() { + if (!iterator.valid()) + return false; bool rv = false; while (iterator.valid() && (!iterator.piece->prev->eol()) && @@ -141,6 +143,8 @@ bool PieceTable::Cursor::go_start_of_line() bool PieceTable::Cursor::go_end_of_line() { + if (!iterator.valid()) + return false; bool rv = false; while (iterator.valid() && (!iterator.piece->eol()) && @@ -159,6 +163,8 @@ bool PieceTable::Cursor::go_end_of_line() bool PieceTable::Cursor::go_up(int n, uint32_t desired_column) { + if (!iterator.valid()) + return false; Piece * p = prev_line(); if (p == nullptr) { @@ -174,6 +180,8 @@ bool PieceTable::Cursor::go_up(int n, uint32_t desired_column) bool PieceTable::Cursor::go_down(int n, uint32_t desired_column) { + if (!iterator.valid()) + return false; Piece * p = next_line(); if (p == nullptr) { @@ -189,6 +197,8 @@ bool PieceTable::Cursor::go_down(int n, uint32_t desired_column) bool PieceTable::Cursor::go_left(int n) { + if (!iterator.valid()) + return false; if (is_start_of_line()) { return false; @@ -209,6 +219,8 @@ bool PieceTable::Cursor::go_left(int n) bool PieceTable::Cursor::go_right(int n) { + if (!iterator.valid()) + return false; if (is_end_of_line()) { return false;