aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/CellBuffer.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/CellBuffer.cxx')
-rw-r--r--src/CellBuffer.cxx5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/CellBuffer.cxx b/src/CellBuffer.cxx
index 3e9f0e7b7..56dd27ea0 100644
--- a/src/CellBuffer.cxx
+++ b/src/CellBuffer.cxx
@@ -597,6 +597,7 @@ CellBuffer::CellBuffer(int initialLength) {
part2body = body + gaplen;
readOnly = false;
collectingUndo = true;
+ growSize = 4000;
}
CellBuffer::~CellBuffer() {
@@ -627,7 +628,9 @@ void CellBuffer::RoomFor(int insertionLength) {
if (gaplen <= insertionLength) {
//Platform::DebugPrintf("need room %d %d\n", gaplen, insertionLength);
GapTo(length);
- int newSize = size + insertionLength + 4000;
+ if (growSize * 4 < size)
+ growSize *= 2;
+ int newSize = size + insertionLength + growSize;
//Platform::DebugPrintf("moved gap %d\n", newSize);
char *newBody = new char[newSize];
memcpy(newBody, body, size);