From 1c560ae00439716d7bdfc219e8e833e3b0833b4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Kubern=C3=A1t?= Date: Wed, 15 Nov 2023 13:44:08 +0100 Subject: [PATCH] Check if lookupDir exists before iterating std::filesystem::recursive_directory_iterator throws if the directory doesn't exist. --- libosmscout-client/src/osmscoutclient/MapManager.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libosmscout-client/src/osmscoutclient/MapManager.cpp b/libosmscout-client/src/osmscoutclient/MapManager.cpp index 77d23494e..6ec5334b3 100644 --- a/libosmscout-client/src/osmscoutclient/MapManager.cpp +++ b/libosmscout-client/src/osmscoutclient/MapManager.cpp @@ -43,6 +43,11 @@ CancelableFuture MapManager::LookupDatabases() std::vector databaseFsDirectories; for (const auto &lookupDir:databaseLookupDirs){ + if (!std::filesystem::exists(lookupDir) || !std::filesystem::is_directory(lookupDir)) { + osmscout::log.Warn() << "Lookup dir" << lookupDir << "doesn't exist"; + continue; + } + for (const auto & fInfo : std::filesystem::recursive_directory_iterator(lookupDir)) { auto entryPath = fInfo.path(); if (fInfo.is_regular_file() && entryPath.has_filename() && entryPath.has_parent_path() && entryPath.filename() == TypeConfig::FILE_TYPES_DAT){