summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2013-01-23 14:25:48 +0100
committerMaxime Coste <frrrwww@gmail.com>2013-01-23 14:39:33 +0100
commit3404366b6593bbf372da35ef8c7ce6cde429cef7 (patch)
tree9ca629f41dcb6809a8fd35fda53dd715a9771829 /src
parentf14bc5e31004b37e90ba000a0714aa83e7f2763e (diff)
add more asserts
Diffstat (limited to 'src')
-rw-r--r--src/buffer.cc5
-rw-r--r--src/dynamic_selection_list.cc5
-rw-r--r--src/editor.cc3
-rw-r--r--src/selection.cc6
4 files changed, 14 insertions, 5 deletions
diff --git a/src/buffer.cc b/src/buffer.cc
index 92089e83..d384f3bb 100644
--- a/src/buffer.cc
+++ b/src/buffer.cc
@@ -245,7 +245,8 @@ void Buffer::check_invariant() const
void Buffer::do_insert(const BufferIterator& pos, const String& content)
{
- assert(pos.is_end() or utf8::is_character_start(pos));
+ assert(pos.is_valid() and (pos.is_end() or utf8::is_character_start(pos)));
+ assert(not contains(content, '\0'));
++m_timestamp;
ByteCount offset = pos.offset();
@@ -322,6 +323,8 @@ void Buffer::do_insert(const BufferIterator& pos, const String& content)
void Buffer::do_erase(const BufferIterator& begin, const BufferIterator& end)
{
+ assert(begin.is_valid());
+ assert(end.is_valid());
assert(utf8::is_character_start(begin) and
(end.is_end() or utf8::is_character_start(end)));
++m_timestamp;
diff --git a/src/dynamic_selection_list.cc b/src/dynamic_selection_list.cc
index d7eb5beb..90067505 100644
--- a/src/dynamic_selection_list.cc
+++ b/src/dynamic_selection_list.cc
@@ -64,7 +64,10 @@ DynamicSelectionList& DynamicSelectionList::operator=(SelectionList selections)
void DynamicSelectionList::check_invariant() const
{
for (auto& sel : *this)
+ {
assert(m_buffer == &sel.buffer());
+ sel.check_invariant();
+ }
}
void DynamicSelectionList::on_insert(const BufferIterator& begin, const BufferIterator& end)
@@ -73,7 +76,6 @@ void DynamicSelectionList::on_insert(const BufferIterator& begin, const BufferIt
{
sel.first().on_insert(begin.coord(), end.coord());
sel.last().on_insert(begin.coord(), end.coord());
- sel.check_invariant();
}
}
@@ -83,7 +85,6 @@ void DynamicSelectionList::on_erase(const BufferIterator& begin, const BufferIte
{
sel.first().on_erase(begin.coord(), end.coord());
sel.last().on_erase(begin.coord(), end.coord());
- sel.check_invariant();
}
}
diff --git a/src/editor.cc b/src/editor.cc
index 9fcc0f15..4bb9f464 100644
--- a/src/editor.cc
+++ b/src/editor.cc
@@ -334,12 +334,15 @@ public:
void on_insert(const BufferIterator& begin, const BufferIterator& end)
{
+ assert(begin.is_valid());
+ assert(end.is_valid());
m_first = begin;
m_last = utf8::previous(end);
}
void on_erase(const BufferIterator& begin, const BufferIterator& end)
{
+ assert(begin.is_valid());
m_first = begin;
if (m_first >= m_buffer.end())
m_first = utf8::previous(m_buffer.end());
diff --git a/src/selection.cc b/src/selection.cc
index bc156f26..77511c00 100644
--- a/src/selection.cc
+++ b/src/selection.cc
@@ -26,8 +26,10 @@ BufferIterator Range::end() const
void Range::check_invariant() const
{
- assert(utf8::is_character_start(first()));
- assert(utf8::is_character_start(last()));
+ assert(m_first.is_valid());
+ assert(m_last.is_valid());
+ assert(utf8::is_character_start(m_first));
+ assert(utf8::is_character_start(m_last));
}
static void avoid_eol(BufferIterator& it)