aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorZufu Liu <unknown>2025-05-24 09:22:12 +1000
committerZufu Liu <unknown>2025-05-24 09:22:12 +1000
commit32f7837ed8b70cf20e15ef34ef8448d18909910a (patch)
treebc790f63dd9cff8659e3046baf25512a735e852f
parent92e5ba5f3c875913dc3ce38bf859e45a076ef872 (diff)
downloadscintilla-mirror-32f7837ed8b70cf20e15ef34ef8448d18909910a.tar.gz
Change the line wrap memory growth strategy to handle huge documents better.
Clarify code a little.
-rw-r--r--src/PositionCache.cxx4
1 files changed, 2 insertions, 2 deletions
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<int[]> newLineStarts = std::make_unique<int[]>(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;