diff --git a/BaseLib/FileTools.cpp b/BaseLib/FileTools.cpp index 6f60be1b85870b6057b9f3f98029a63958dafc87..75525033b2c0b7e214e213d0e3144b976423dda2 100644 --- a/BaseLib/FileTools.cpp +++ b/BaseLib/FileTools.cpp @@ -141,11 +141,11 @@ std::string extractPath(std::string const& pathname) return ""; return pathname.substr(0, pos + 1); } -static const char * pathSeparator = +static const char pathSeparator = #ifdef _WIN32 - "\\"; + '\\'; #else - "/"; + '/'; #endif std::string appendPathSeparator(std::string const& path) @@ -157,12 +157,18 @@ std::string appendPathSeparator(std::string const& path) std::string joinPaths(std::string const& pathA, std::string const& pathB) { - std::string tmpB(pathB); - if(tmpB.substr(0, 1) == ".") - tmpB = tmpB.substr(1); - if(tmpB.substr(0, 1) == pathSeparator) - tmpB = tmpB.substr(1); - return appendPathSeparator(pathA) + tmpB; + if (pathA.empty()) + return pathB; + + if (pathB.empty()) + return pathA; + + if (pathB.front() == pathSeparator) { + auto const tmpB = pathB.substr(1); + return appendPathSeparator(pathA) + tmpB; + } else { + return appendPathSeparator(pathA) + pathB; + } } } // end namespace BaseLib