diff options
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) { |