From b8c2557482074da9a03d91421e384230b354894a Mon Sep 17 00:00:00 2001 From: Jan Date: Tue, 4 Feb 2020 19:44:56 +0100 Subject: [PATCH] ObjLoading: Display error message on directory_iterator throwing an exception --- .../SearchPath/SearchPathFilesystem.cpp | 42 +++++++++++-------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/src/ObjLoading/SearchPath/SearchPathFilesystem.cpp b/src/ObjLoading/SearchPath/SearchPathFilesystem.cpp index b95f5a5b..8d2e992c 100644 --- a/src/ObjLoading/SearchPath/SearchPathFilesystem.cpp +++ b/src/ObjLoading/SearchPath/SearchPathFilesystem.cpp @@ -25,28 +25,36 @@ FileAPI::IFile* SearchPathFilesystem::Open(const std::string& fileName) return nullptr; } -void SearchPathFilesystem::Find(const SearchPathSearchOptions& options, const std::function& callback) +void SearchPathFilesystem::Find(const SearchPathSearchOptions& options, + const std::function& callback) { - if (options.m_should_include_subdirectories) + try { - std::filesystem::recursive_directory_iterator iterator(m_path); - for (const auto entry = begin(iterator); iterator != end(iterator); ++iterator) + if (options.m_should_include_subdirectories) { - auto path = entry->path(); - if (options.m_filter_extensions && path.extension().string() != options.m_extension) - continue; - callback(options.m_absolute_paths ? absolute(path).string() : path.string()); + std::filesystem::recursive_directory_iterator iterator(m_path); + for (const auto entry = begin(iterator); iterator != end(iterator); ++iterator) + { + auto path = entry->path(); + if (options.m_filter_extensions && path.extension().string() != options.m_extension) + continue; + callback(options.m_absolute_paths ? absolute(path).string() : path.string()); + } + } + else + { + std::filesystem::directory_iterator iterator(m_path); + for (const auto entry = begin(iterator); iterator != end(iterator); ++iterator) + { + auto path = entry->path(); + if (options.m_filter_extensions && path.extension().string() != options.m_extension) + continue; + callback(options.m_absolute_paths ? absolute(path).string() : path.string()); + } } } - else + catch (std::filesystem::filesystem_error& e) { - std::filesystem::directory_iterator iterator(m_path); - for (const auto entry = begin(iterator); iterator != end(iterator); ++iterator) - { - auto path = entry->path(); - if (options.m_filter_extensions && path.extension().string() != options.m_extension) - continue; - callback(options.m_absolute_paths ? absolute(path).string() : path.string()); - } + printf("Directory Iterator threw error when trying to find files: \"%s\"\n", e.what()); } }