diff --git a/source/adios2/toolkit/format/bp1/BP1Base.cpp b/source/adios2/toolkit/format/bp1/BP1Base.cpp index 19e9ec190785e1b0f3fd45b248741afe239939f7..1ee2bc19ff24279c04a0d38bc257604018b56f52 100644 --- a/source/adios2/toolkit/format/bp1/BP1Base.cpp +++ b/source/adios2/toolkit/format/bp1/BP1Base.cpp @@ -11,6 +11,9 @@ #include "BP1Base.h" #include "BP1Base.tcc" +#include <iostream> + +#include "adios2/ADIOSTypes.h" //PathSeparator #include "adios2/helper/adiosFunctions.h" //CreateDirectory, StringToTimeUnit namespace adios2 @@ -111,10 +114,15 @@ BP1Base::GetBPNames(const std::vector<std::string> &baseNames) const noexcept const int rank) -> std::string { const std::string bpBaseName = AddExtension(baseName, ".bp"); + // path/root.bp.dir/root.bp.rank - const std::string bpRootName = - bpBaseName.substr(bpBaseName.find_last_of(PathSeparator)); + std::string bpRootName = bpBaseName; + const auto lastPathSeparator(bpBaseName.find_last_of(PathSeparator)); + if (lastPathSeparator != std::string::npos) + { + bpRootName = bpBaseName.substr(lastPathSeparator); + } const std::string bpName(bpBaseName + ".dir/" + bpRootName + "." + std::to_string(rank)); return bpName;