/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-#include "private.h"
#include "smpi_f2c.hpp"
+#include "private.hpp"
#include "smpi_process.hpp"
#include <cstdio>
}
char* F2C::get_key_id(char* key, int id) {
- std::snprintf(key, KEY_SIZE, "%x_%d", static_cast<unsigned>(id), smpi_process()->index());
+ std::snprintf(key, KEY_SIZE, "%x_%lu", static_cast<unsigned>(id), simgrid::s4u::Actor::self()->getPid());
return key;
}
f2c_lookup_ = new std::unordered_map<std::string, F2C*>;
}
- for (auto elm : *f2c_lookup_)
+ for (auto const& elm : *f2c_lookup_)
if (elm.second == this)
return std::stoi(elm.first);
if(id >= 0){
char key[KEY_SIZE];
- try {
- return f2c_lookup_->at(get_key(key, id));
- } catch (std::out_of_range& unfound) {
- return nullptr;
- }
+ auto comm = f2c_lookup_->find(get_key(key, id));
+ return comm == f2c_lookup_->end() ? nullptr : comm->second;
}else
return nullptr;
}