summaryrefslogtreecommitdiff
path: root/Source/Core/Common/FileSearch.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/Common/FileSearch.cpp')
-rw-r--r--Source/Core/Common/FileSearch.cpp22
1 files changed, 13 insertions, 9 deletions
diff --git a/Source/Core/Common/FileSearch.cpp b/Source/Core/Common/FileSearch.cpp
index 561e1136e6..b37e0cc5cd 100644
--- a/Source/Core/Common/FileSearch.cpp
+++ b/Source/Core/Common/FileSearch.cpp
@@ -97,16 +97,20 @@ std::vector<std::string> DoFileSearch(const std::vector<std::string>& directorie
};
for (const auto& directory : directories)
{
- if (recursive)
+ const fs::path directory_path = fs::u8path(directory);
+ if (fs::is_directory(directory_path)) // Can't create iterators for non-existant directories
{
- // TODO use fs::directory_options::follow_directory_symlink ?
- for (auto& entry : fs::recursive_directory_iterator(fs::u8path(directory)))
- add_filtered(entry);
- }
- else
- {
- for (auto& entry : fs::directory_iterator(fs::u8path(directory)))
- add_filtered(entry);
+ if (recursive)
+ {
+ // TODO use fs::directory_options::follow_directory_symlink ?
+ for (auto& entry : fs::recursive_directory_iterator(std::move(directory_path)))
+ add_filtered(entry);
+ }
+ else
+ {
+ for (auto& entry : fs::directory_iterator(std::move(directory_path)))
+ add_filtered(entry);
+ }
}
}