diff --git a/include/spdlog/details/file_helper-inl.h b/include/spdlog/details/file_helper-inl.h index 1935ddf2..cc21075c 100644 --- a/include/spdlog/details/file_helper-inl.h +++ b/include/spdlog/details/file_helper-inl.h @@ -28,15 +28,14 @@ SPDLOG_INLINE file_helper::~file_helper() SPDLOG_INLINE void file_helper::open(const filename_t &fname, bool truncate) { close(); - auto *mode = truncate ? SPDLOG_FILENAME_T("wb") : SPDLOG_FILENAME_T("ab"); - auto folder_name = os::dir_name(fname); filename_ = fname; + // create containing folder if not empty string and not exists already + os::create_dir(os::dir_name(fname)); + + auto *mode = truncate ? SPDLOG_FILENAME_T("wb") : SPDLOG_FILENAME_T("ab"); for (int tries = 0; tries < open_tries_; ++tries) { - // create if not empty and not exists already - os::create_dir(folder_name); - if (!os::fopen_s(&fd_, fname, mode)) { return; diff --git a/include/spdlog/details/os-inl.h b/include/spdlog/details/os-inl.h index 95a67917..35a8934a 100644 --- a/include/spdlog/details/os-inl.h +++ b/include/spdlog/details/os-inl.h @@ -499,6 +499,7 @@ SPDLOG_INLINE bool create_dir(filename_t path) size_t search_offset = 0; do { + fmt::string_view t; auto token_pos = path.find(folder_sep, search_offset); // treat the entire path as a folder if no folder separator not found if (token_pos == filename_t::npos)