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