You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by sh...@apache.org on 2010/11/12 23:28:14 UTC

svn commit: r1034586 - /qpid/trunk/qpid/cpp/src/qpid/store/ms-clfs/Messages.cpp

Author: shuston
Date: Fri Nov 12 22:28:14 2010
New Revision: 1034586

URL: http://svn.apache.org/viewvc?rev=1034586&view=rev
Log:
Handle iterator properly when removing entries from list; resolves QPID-2941.

Modified:
    qpid/trunk/qpid/cpp/src/qpid/store/ms-clfs/Messages.cpp

Modified: qpid/trunk/qpid/cpp/src/qpid/store/ms-clfs/Messages.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/store/ms-clfs/Messages.cpp?rev=1034586&r1=1034585&r2=1034586&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/store/ms-clfs/Messages.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/store/ms-clfs/Messages.cpp Fri Nov 12 22:28:14 2010
@@ -359,10 +359,13 @@ Messages::recover(qpid::broker::Recovery
                 std::list<MessageInfo::Location>::iterator w = m->where.begin();
                 while (w != m->where.end()) {
                     if (w->queueId == loc.queueId) {
-                        if (loc.transaction.get() != 0)
+                        if (loc.transaction.get() != 0) {
                             *w = loc;
-                        else
-                            m->where.erase(w);
+                            ++w;
+                        }
+                        else {
+                            w = m->where.erase(w);
+                        }
                     }
                 }
             }
@@ -381,6 +384,7 @@ Messages::recover(qpid::broker::Recovery
             messages.insert(p);
         }
     }
+
     QPID_LOG(debug, "Message log recovery done.");
     // Done! Ok, go back and delete all the homeless messages.
     BOOST_FOREACH(uint64_t msg, homeless) {



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org