summaryrefslogtreecommitdiff
path: root/src/buffer_iterator.inl.hh
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2012-06-28 14:26:01 +0200
committerMaxime Coste <frrrwww@gmail.com>2012-06-28 14:26:01 +0200
commit36e4dacdf5e33b9d92ea59124ef67a040b5392cb (patch)
tree39935e0e6e8315c14d3f53b3a38e5f5b813a8a9f /src/buffer_iterator.inl.hh
parent9b6b6b6b174578740b26c0d1da43b6615889d1b9 (diff)
Fix BufferIterator::on_erase and tweak Buffer
Diffstat (limited to 'src/buffer_iterator.inl.hh')
-rw-r--r--src/buffer_iterator.inl.hh14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/buffer_iterator.inl.hh b/src/buffer_iterator.inl.hh
index bcb83ab0..2ae412e7 100644
--- a/src/buffer_iterator.inl.hh
+++ b/src/buffer_iterator.inl.hh
@@ -32,6 +32,7 @@ inline BufferIterator& BufferIterator::operator=(const BufferIterator& iterator)
{
m_buffer = iterator.m_buffer;
m_coord = iterator.m_coord;
+ assert(is_valid());
return *this;
}
@@ -90,18 +91,17 @@ inline void BufferIterator::on_erase(const BufferCoord& begin,
if (m_coord < begin)
return;
- BufferCoord measure;
- measure.line = end.line - begin.line;
- measure.column = end.column - (measure.line == 0 ? begin.column : 0);
if (m_coord <= end)
m_coord = begin;
else
{
- m_coord.line -= measure.line;
- if (measure.line > 0 and begin.line == m_coord.line)
- m_coord.column += begin.column;
if (end.line == m_coord.line)
- m_coord.column -= measure.column;
+ {
+ m_coord.line = begin.line;
+ m_coord.column = begin.column + m_coord.column - end.column;
+ }
+ else
+ m_coord.line -= end.line - begin.line;
}
if (is_end())