From 6e5489c88eecb1a70feb9b57e779a0ac0b0e07d1 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Tue, 13 Sep 2016 23:16:23 -0400 Subject: [PATCH] do not allow cursor movements for non-valid cursors --- src/core/PieceTable.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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;