X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4d140762b2b9c8746cdd3b0680a7167867ba0ad9..b87fc0829538ec066fd077e6c30ee6270b8abd78:/src/smpi/include/smpi_keyvals.hpp diff --git a/src/smpi/include/smpi_keyvals.hpp b/src/smpi/include/smpi_keyvals.hpp index bc3e2af943..986540f4e9 100644 --- a/src/smpi/include/smpi_keyvals.hpp +++ b/src/smpi/include/smpi_keyvals.hpp @@ -109,11 +109,12 @@ template int Keyval::attr_get(int keyval, void* attr_value, int* fl *flag=0; return MPI_SUCCESS; } - try { - *static_cast(attr_value) = attributes()->at(keyval); + const auto& attribs = attributes(); + auto attr = attribs->find(keyval); + if (attr != attribs->end()) { + *static_cast(attr_value) = attr->second; *flag=1; - } - catch (const std::out_of_range& oor) { + } else { *flag=0; } return MPI_SUCCESS; @@ -140,12 +141,13 @@ template void Keyval::cleanup_attr(){ if (not attributes()->empty()) { int flag=0; for(auto it : attributes_){ - try{ - smpi_key_elem elem = T::keyvals_.at(it.first); + auto elm = T::keyvals_.find(it.first); + if (elm != T::keyvals_.end()) { + smpi_key_elem elem = elm->second; if(elem != nullptr){ call_deleter((T*)this, elem, it.first,it.second,&flag); } - }catch(const std::out_of_range& oor) { + } else { //already deleted, not a problem; flag=0; }