X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=saml%2Fsaml2%2Fmetadata%2Fimpl%2FAbstractMetadataProvider.cpp;h=6cd727310fb84b74dfada086c6e59ac0f3af92b9;hb=49e16c539fc7c1e50b358e323ca9421a3ff4a6c8;hp=40180f4f1e7446ca428f0c9e2fe72cae06372792;hpb=59f8e99deb7181862dbc717e2ee74542667e19d0;p=shibboleth%2Fcpp-opensaml.git diff --git a/saml/saml2/metadata/impl/AbstractMetadataProvider.cpp b/saml/saml2/metadata/impl/AbstractMetadataProvider.cpp index 40180f4..6cd7273 100644 --- a/saml/saml2/metadata/impl/AbstractMetadataProvider.cpp +++ b/saml/saml2/metadata/impl/AbstractMetadataProvider.cpp @@ -319,13 +319,10 @@ const Credential* AbstractMetadataProvider::resolve(const CredentialCriteria* cr Lock lock(m_credentialLock.get()); const credmap_t::mapped_type& creds = resolveCredentials(metacrit->getRole()); - // Indirect iterator derefs the pointers in the vector to pass to the matches() method by reference. - credmap_t::mapped_type::const_iterator c = find_if( - creds.begin(), creds.end(), lambda::bind(&CredentialCriteria::matches, metacrit, boost::ref(*_1)) - ); - if (c != creds.end()) - return *c; - return nullptr; + for (credmap_t::mapped_type::const_iterator c = creds.begin(); c!=creds.end(); ++c) + if (metacrit->matches(*(*c))) + return *c; +return nullptr; } vector::size_type AbstractMetadataProvider::resolve( @@ -339,13 +336,9 @@ vector::size_type AbstractMetadataProvider::resolve( Lock lock(m_credentialLock.get()); const credmap_t::mapped_type& creds = resolveCredentials(metacrit->getRole()); - // Add matching creds to results array. - static void (vector::* push_back)(const Credential* const &) = &vector::push_back; - for_each( - creds.begin(), creds.end(), - if_(lambda::bind(&CredentialCriteria::matches, metacrit, boost::ref(*_1)))[lambda::bind(push_back, boost::ref(results), _1)] - ); - + for (credmap_t::mapped_type::const_iterator c = creds.begin(); c!=creds.end(); ++c) + if (metacrit->matches(*(*c))) + results.push_back(*c); return results.size(); }