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);