diff options
author | Stephen D. Huston <shuston@apache.org> | 2010-11-12 22:28:14 +0000 |
---|---|---|
committer | Stephen D. Huston <shuston@apache.org> | 2010-11-12 22:28:14 +0000 |
commit | 36f73c195fbe40c8c8a9afae66d56f871070164c (patch) | |
tree | e21a4e096bded8703652b4878f4679f633345379 /cpp/src | |
parent | d0a58a908825f6f487e6c514b17f634acc034c9e (diff) | |
download | qpid-python-36f73c195fbe40c8c8a9afae66d56f871070164c.tar.gz |
Handle iterator properly when removing entries from list; resolves QPID-2941.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1034586 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/qpid/store/ms-clfs/Messages.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/cpp/src/qpid/store/ms-clfs/Messages.cpp b/cpp/src/qpid/store/ms-clfs/Messages.cpp index 6ab00d560a..db5d2ebf4c 100644 --- a/cpp/src/qpid/store/ms-clfs/Messages.cpp +++ b/cpp/src/qpid/store/ms-clfs/Messages.cpp @@ -359,10 +359,13 @@ Messages::recover(qpid::broker::RecoveryManager& recoverer, 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::RecoveryManager& recoverer, 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) { |