diff options
Diffstat (limited to 'db/repl/rs.cpp')
-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; |