From f6a9859562ddeb04e882e4a3d15adbf64345452a Mon Sep 17 00:00:00 2001 From: Zufu Liu Date: Sun, 17 Jul 2022 14:09:52 +1000 Subject: Feature [feature-requests:#1441] Line state optimized to avoid excess allocations by always allocating for every line. --- src/PerLine.cxx | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'src/PerLine.cxx') diff --git a/src/PerLine.cxx b/src/PerLine.cxx index 2ea3f0ce4..f3fddcf27 100644 --- a/src/PerLine.cxx +++ b/src/PerLine.cxx @@ -262,15 +262,13 @@ void LineLevels::ClearLevels() { } int LineLevels::SetLevel(Sci::Line line, int level, Sci::Line lines) { - int prev = 0; + int prev = level; if ((line >= 0) && (line < lines)) { if (!levels.Length()) { ExpandLevels(lines + 1); } prev = levels[line]; - if (prev != level) { - levels[line] = level; - } + levels[line] = level; } return prev; } @@ -312,10 +310,13 @@ void LineState::RemoveLine(Sci::Line line) { } } -int LineState::SetLineState(Sci::Line line, int state) { - lineStates.EnsureLength(line + 1); - const int stateOld = lineStates[line]; - lineStates[line] = state; +int LineState::SetLineState(Sci::Line line, int state, Sci::Line lines) { + int stateOld = state; + if ((line >= 0) && (line < lines)) { + lineStates.EnsureLength(lines + 1); + stateOld = lineStates[line]; + lineStates[line] = state; + } return stateOld; } -- cgit v1.2.3