You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2007/08/31 11:36:37 UTC
svn commit: r571410 -
/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/AccumulatedAck.cpp
Author: gsim
Date: Fri Aug 31 02:36:36 2007
New Revision: 571410
URL: http://svn.apache.org/viewvc?rev=571410&view=rev
Log:
Fixed bug where stale iterator is used.
Modified:
incubator/qpid/trunk/qpid/cpp/src/qpid/broker/AccumulatedAck.cpp
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/AccumulatedAck.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/AccumulatedAck.cpp?rev=571410&r1=571409&r2=571410&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/AccumulatedAck.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/AccumulatedAck.cpp Fri Aug 31 02:36:36 2007
@@ -35,10 +35,11 @@
Range r(first, last);
bool handled = false;
+ bool markMerged = false;
list<Range>::iterator merged = ranges.end();
if (r.mergeable(mark)) {
mark = r.end;
- merged = ranges.begin();
+ markMerged = true;
handled = true;
} else {
for (list<Range>::iterator i = ranges.begin(); i != ranges.end() && !handled; i++) {
@@ -57,9 +58,9 @@
while (!ranges.empty() && ranges.front().end <= mark) {
ranges.pop_front();
}
- //new range is incorporated, but may be possible to consolidate
- if (merged == ranges.begin()) {
- //consolidate mark
+ if (markMerged) {
+ //new range is incorporated, but may be possible to consolidate
+ merged = ranges.begin();
while (merged != ranges.end() && merged->mergeable(mark)) {
mark = merged->end;
merged = ranges.erase(merged);