diff options
| -rw-r--r-- | src/PerLine.cxx | 8 | ||||
| -rw-r--r-- | src/PerLine.h | 2 | ||||
| -rw-r--r-- | test/simpleTests.py | 10 | 
3 files changed, 16 insertions, 4 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) { diff --git a/src/PerLine.h b/src/PerLine.h index b43c52bb8..50ce1e551 100644 --- a/src/PerLine.h +++ b/src/PerLine.h @@ -37,7 +37,7 @@ public:  	bool Contains(int handle) const;  	bool InsertHandle(int handle, int markerNum);  	void RemoveHandle(int handle); -	bool RemoveNumber(int markerNum); +	bool RemoveNumber(int markerNum, bool all);  	void CombineWith(MarkerHandleSet *other);  }; diff --git a/test/simpleTests.py b/test/simpleTests.py index d8abbb651..c8a111044 100644 --- a/test/simpleTests.py +++ b/test/simpleTests.py @@ -651,6 +651,16 @@ class TestMarkers(unittest.TestCase):  		self.ed.MarkerDelete(1,1)  		self.assertEquals(self.ed.MarkerLineFromHandle(handle), -1) +	def testTwiceAddedDelete(self): +		handle = self.ed.MarkerAdd(1,1) +		self.assertEquals(self.ed.MarkerGet(1), 2) +		handle2 = self.ed.MarkerAdd(1,1) +		self.assertEquals(self.ed.MarkerGet(1), 2) +		self.ed.MarkerDelete(1,1) +		self.assertEquals(self.ed.MarkerGet(1), 2) +		self.ed.MarkerDelete(1,1) +		self.assertEquals(self.ed.MarkerGet(1), 0) +  	def testMarkerDeleteAll(self):  		h1 = self.ed.MarkerAdd(0,1)  		h2 = self.ed.MarkerAdd(1,2)  | 
