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");