From 3b1bea80aa096759f436fd32b0a2118a7f06ecc3 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sun, 15 Jan 2017 20:23:09 -0500 Subject: [PATCH] fix bug dealing with coalescing erase change units within one change operation --- src/core/Buffer.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/Buffer.cc b/src/core/Buffer.cc index 1b2b215..6be431e 100644 --- a/src/core/Buffer.cc +++ b/src/core/Buffer.cc @@ -326,6 +326,7 @@ void Buffer::record_change(size_t offset, size_t length, bool insert) { /* The new deletion immediately precedes the previous. */ m_gap_buffer->copy_to(offset, length, *m_change_buffer, cu.change_buffer_offset); + cu.buffer_position = offset; } cu.length += length; return; @@ -388,6 +389,7 @@ void Buffer::apply_change_unit(const ChangeUnit & change_unit, bool forward) { if (forward == change_unit.insert) { + m_change_buffer->compact(); insert_data(change_unit.buffer_position, m_change_buffer->address(change_unit.change_buffer_offset), change_unit.length);