From 70661f172c8a28ba6613d9f44fc02d9060cd5b58 Mon Sep 17 00:00:00 2001 From: Maksim Andrianov Date: Thu, 6 Dec 2018 17:34:28 +0300 Subject: [PATCH] [platform] Fixed MkDirRecursively --- coding/file_name_utils.hpp | 3 +++ platform/platform.cpp | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/coding/file_name_utils.hpp b/coding/file_name_utils.hpp index 42939f4b0a..f39ca0bb00 100644 --- a/coding/file_name_utils.hpp +++ b/coding/file_name_utils.hpp @@ -40,6 +40,9 @@ inline std::string JoinPath(std::string const & file) { return file; } template std::string JoinPath(std::string const & folder, Args &&... args) { + if (folder.empty()) + return JoinPath(std::forward(args)...); + return AddSlashIfNeeded(folder) + JoinPath(std::forward(args)...); } } // namespace base diff --git a/platform/platform.cpp b/platform/platform.cpp index c7d4df8864..add77316ce 100644 --- a/platform/platform.cpp +++ b/platform/platform.cpp @@ -294,8 +294,9 @@ bool Platform::MkDirChecked(string const & dirName) // static bool Platform::MkDirRecursively(string const & dirName) { - auto const tokens = strings::Tokenize(dirName, base::GetNativeSeparator().c_str()); - string path = base::GetNativeSeparator(); + auto const sep = base::GetNativeSeparator(); + string path = strings::StartsWith(dirName, sep) ? sep : ""; + auto const tokens = strings::Tokenize(dirName, sep.c_str()); for (auto const & t : tokens) { path = base::JoinPath(path, t);