summaryrefslogtreecommitdiff
path: root/src/dynamic_buffer_iterator.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2011-12-02 18:57:18 +0000
committerMaxime Coste <frrrwww@gmail.com>2011-12-02 18:57:18 +0000
commit8e39edc5675509d7f65b6b44c4f9f46c649d9929 (patch)
tree79bdfcc73ec0af99048abc0b06f20cf75fd2a006 /src/dynamic_buffer_iterator.cc
parentb1daf8de16d7612ed116d3a5f98469ef1835e74c (diff)
DynamicBufferIterator: fix end of buffer corner case
Diffstat (limited to 'src/dynamic_buffer_iterator.cc')
-rw-r--r--src/dynamic_buffer_iterator.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/dynamic_buffer_iterator.cc b/src/dynamic_buffer_iterator.cc
index fac3cd39..e434ded6 100644
--- a/src/dynamic_buffer_iterator.cc
+++ b/src/dynamic_buffer_iterator.cc
@@ -44,7 +44,9 @@ void DynamicBufferIterator::on_modification(const BufferModification& modificati
size_t length = modification.content.length();
if (modification.type == BufferModification::Erase)
{
- if (*this <= modification.position + length)
+ // do not move length on the other side of the inequality,
+ // as modification.position + length may be after buffer end
+ if (*this - length <= modification.position)
BufferIterator::operator=(modification.position);
else
*this -= length;