- std::string maps_name = std::string("/proc/") + std::to_string(getpid()) + "maps";
- FILE* maps = fopen(maps_name.c_str(), "r");
-
- unsigned long int addr = strtoul(addrs[i].c_str(), &p, 16);
- if (*p != '\0') {
+ std::string maps_name = std::string("/proc/") + std::to_string(getpid()) + "/maps";
+ std::ifstream maps(maps_name);
+ if (not maps) {
+ XBT_CRITICAL("open(\"%s\") failed: %s", maps_name.c_str(), strerror(errno));
+ continue;
+ }
+ size_t pos;
+ unsigned long int addr = std::stoul(addrs[i], &pos, 16);
+ if (pos != addrs[i].length()) {