diff options
author | Antonin Kral <a.kral@bobek.cz> | 2012-03-30 21:40:45 +0200 |
---|---|---|
committer | Antonin Kral <a.kral@bobek.cz> | 2012-03-30 21:40:45 +0200 |
commit | eaaa7b30c99b89b5483e0a372bb73fe8c8695185 (patch) | |
tree | 6c08f243b00c0f6b7a4897a236774cf484e61314 /db/repl | |
parent | ba59b00736b5b8dc0f0bd46397575aaf0cd4d44f (diff) | |
download | mongodb-eaaa7b30c99b89b5483e0a372bb73fe8c8695185.tar.gz |
Imported Upstream version 2.0.4
Diffstat (limited to 'db/repl')
-rw-r--r-- | db/repl/rs.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/db/repl/rs.cpp b/db/repl/rs.cpp index f827291..23abc24 100644 --- a/db/repl/rs.cpp +++ b/db/repl/rs.cpp @@ -100,17 +100,20 @@ namespace mongo { lock lk(this); Member *max = 0; - - for (set<unsigned>::iterator it = _electableSet.begin(); it != _electableSet.end(); it++) { + set<unsigned>::iterator it = _electableSet.begin(); + while ( it != _electableSet.end() ) { const Member *temp = findById(*it); if (!temp) { log() << "couldn't find member: " << *it << endl; - _electableSet.erase(*it); + set<unsigned>::iterator it_delete = it; + it++; + _electableSet.erase(it_delete); continue; } if (!max || max->config().priority < temp->config().priority) { max = (Member*)temp; } + it++; } return max; |