mirror of
https://github.com/codership/wsrep-lib.git
synced 2025-07-28 20:02:00 +03:00
codership/wsrep-lib#35 Rewrote member_index() to use iterators
Use iterators for scanning members vector in order to avoid issues with integer signedness and range checks. The vector is usually rather small and not in hot codepath, so performance is here not an issue. Added unit test for member_index() method.
This commit is contained in:
15
src/view.cpp
15
src/view.cpp
@ -22,21 +22,14 @@
|
||||
|
||||
int wsrep::view::member_index(const wsrep::id& member_id) const
|
||||
{
|
||||
// first, quick guess
|
||||
if (own_index_ >= 0 && members_[own_index_].id() == member_id)
|
||||
for (std::vector<member>::const_iterator i(members_.begin());
|
||||
i != members_.end(); ++i)
|
||||
{
|
||||
return own_index_;
|
||||
}
|
||||
|
||||
// guesing didn't work, scan the list
|
||||
for (size_t i(0); i < members_.size(); ++i)
|
||||
{
|
||||
if (static_cast<int>(i) != own_index_ && members_[i].id() == member_id)
|
||||
if (i->id() == member_id)
|
||||
{
|
||||
return i;
|
||||
return (i - members_.begin());
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user