diff --git a/Source/Core/Common/FileSearch.cpp b/Source/Core/Common/FileSearch.cpp index 3f810132f5..4b3b0820d2 100644 --- a/Source/Core/Common/FileSearch.cpp +++ b/Source/Core/Common/FileSearch.cpp @@ -46,14 +46,15 @@ FileSearchWithTest(const std::vector& directories, bool recursive, return result; } -static std::vector DoFileSearchNoSTL(const std::vector& directories, - const std::vector& exts, - bool recursive) +std::vector DoFileSearch(const std::vector& directories, + const std::vector& exts, bool recursive) { bool accept_all = exts.empty(); return FileSearchWithTest(directories, recursive, [&](const File::FSTEntry& entry) { if (accept_all) return true; + if (entry.isDirectory) + return false; std::string name = entry.virtualName; std::transform(name.begin(), name.end(), name.begin(), ::tolower); return std::any_of(exts.begin(), exts.end(), [&](const std::string& ext) { @@ -63,12 +64,6 @@ static std::vector DoFileSearchNoSTL(const std::vector }); } -std::vector DoFileSearch(const std::vector& directories, - const std::vector& exts, bool recursive) -{ - return DoFileSearchNoSTL(directories, exts, recursive); -} - #else std::vector DoFileSearch(const std::vector& directories, @@ -120,9 +115,11 @@ std::vector DoFileSearch(const std::vector& directorie std::sort(result.begin(), result.end()); result.erase(std::unique(result.begin(), result.end()), result.end()); - // Dolphin expects to be able to use "/" (DIR_SEP) everywhere. std::filesystem uses the OS - // separator. - if (fs::path::preferred_separator != DIR_SEP_CHR) + // Dolphin expects to be able to use "/" (DIR_SEP) everywhere. + // std::filesystem uses the OS separator. + constexpr fs::path::value_type os_separator = fs::path::preferred_separator; + static_assert(os_separator == DIR_SEP_CHR || os_separator == '\\', "Unsupported path separator"); + if (os_separator != DIR_SEP_CHR) for (auto& path : result) std::replace(path.begin(), path.end(), '\\', DIR_SEP_CHR);