From fc037de312c9af1533ebdbd244bbdb162a847b20 Mon Sep 17 00:00:00 2001 From: Automatic Release Builder <build@flightgear.org> Date: Tue, 13 Oct 2020 12:40:49 +0100 Subject: [PATCH] =?UTF-8?q?NavDataCache:=20don=E2=80=99t=20duplicate=20FG?= =?UTF-8?q?=5FROOT/Scenery=20path?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Check if the path is in the list, before adding it again. --- src/Navaids/NavDataCache.cxx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/Navaids/NavDataCache.cxx b/src/Navaids/NavDataCache.cxx index 175530c9c..e8425a21d 100644 --- a/src/Navaids/NavDataCache.cxx +++ b/src/Navaids/NavDataCache.cxx @@ -1048,7 +1048,20 @@ void NavDataCache::NavDataCachePrivate::findDatFiles( result.datFileType = datFileType; result.totalSize = 0; - for (const auto& path: globals->get_fg_scenery()) { + // we don't always add FG_ROOT/Scenery to the path list. But if it exists, + // we want to pick up NavData files from it, since we have shipped + // scenery (for BIKF) which uses newer data than the default files + // in Airports/ + auto paths = globals->get_fg_scenery(); + const auto fgrootScenery = globals->get_fg_root() / "Scenery"; + if (fgrootScenery.exists()) { + auto it = std::find(paths.begin(), paths.end(), fgrootScenery); + if (it == paths.end()) { + paths.push_back(fgrootScenery); + } + } + + for (const auto& path: paths) { if (! path.isDir()) { SG_LOG(SG_NAVCACHE, SG_WARN, path << ": given as a scenery path, but is not a directory");