diff options
author | nyamatongwe <unknown> | 2012-06-18 10:29:27 +1000 |
---|---|---|
committer | nyamatongwe <unknown> | 2012-06-18 10:29:27 +1000 |
commit | 7d99273987eb95b0abd36e989daf48f82b517f1f (patch) | |
tree | 8a2faacb0bc43a279f681aa6b01c87be9afdacce /src/PerLine.cxx | |
parent | f0d56e473978dcfa017b6597ef4e2e09e5a477e6 (diff) | |
download | scintilla-mirror-7d99273987eb95b0abd36e989daf48f82b517f1f.tar.gz |
Remove marker only once for SCI_MARKERDELETE. Bug #3535806.
Diffstat (limited to 'src/PerLine.cxx')
-rw-r--r-- | src/PerLine.cxx | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/PerLine.cxx b/src/PerLine.cxx index 0bdb60254..a2225dbb6 100644 --- a/src/PerLine.cxx +++ b/src/PerLine.cxx @@ -99,7 +99,7 @@ void MarkerHandleSet::RemoveHandle(int handle) { } } -bool MarkerHandleSet::RemoveNumber(int markerNum) { +bool MarkerHandleSet::RemoveNumber(int markerNum, bool all) { bool performedDeletion = false; MarkerHandleNumber **pmhn = &root; while (*pmhn) { @@ -108,6 +108,8 @@ bool MarkerHandleSet::RemoveNumber(int markerNum) { *pmhn = mhn->next; delete mhn; performedDeletion = true; + if (!all) + break; } else { pmhn = &((*pmhn)->next); } @@ -223,10 +225,10 @@ bool LineMarkers::DeleteMark(int line, int markerNum, bool all) { delete markers[line]; markers[line] = NULL; } else { - bool performedDeletion = markers[line]->RemoveNumber(markerNum); + bool performedDeletion = markers[line]->RemoveNumber(markerNum, all); someChanges = someChanges || performedDeletion; while (all && performedDeletion) { - performedDeletion = markers[line]->RemoveNumber(markerNum); + performedDeletion = markers[line]->RemoveNumber(markerNum, all); someChanges = someChanges || performedDeletion; } if (markers[line]->Length() == 0) { |