From 32f7837ed8b70cf20e15ef34ef8448d18909910a Mon Sep 17 00:00:00 2001 From: Zufu Liu Date: Sat, 24 May 2025 09:22:12 +1000 Subject: Change the line wrap memory growth strategy to handle huge documents better. Clarify code a little. --- src/PositionCache.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/PositionCache.cxx b/src/PositionCache.cxx index 458521a1c..ed3a08270 100644 --- a/src/PositionCache.cxx +++ b/src/PositionCache.cxx @@ -203,7 +203,7 @@ int LineLayout::SubLineFromPosition(int posInLine, PointEnd pe) const noexcept { void LineLayout::AddLineStart(Sci::Position start) { lines++; if (lines >= lenLineStarts) { - const int newMaxLines = lines + 20; + const int newMaxLines = lines * 2 + 4; std::unique_ptr newLineStarts = std::make_unique(newMaxLines); if (lenLineStarts) { std::copy(lineStarts.get(), lineStarts.get() + lenLineStarts, newLineStarts.get()); @@ -389,8 +389,8 @@ void LineLayout::WrapLine(const Document *pdoc, Sci::Position posLineStart, Wrap lastGoodBreak = CharacterBoundary(lastGoodBreak, 1); } } + AddLineStart(lastGoodBreak); lastLineStart = lastGoodBreak; - AddLineStart(lastLineStart); startOffset = positions[lastLineStart]; // take into account the space for start wrap mark and indent startOffset += wrapWidth - wrapIndent; -- cgit v1.2.3