From 1d8913b53ed2a4d72db463bc32ebffba38ae5f3d Mon Sep 17 00:00:00 2001
From: ThorstenB <brehmt@gmail.com>
Date: Sun, 14 Nov 2010 21:06:19 +0100
Subject: [PATCH] Fixed path resolution (search --fg-aircraft dirs) Do not
 abort early when resource doesn't match /sim/aircraft-dir.

---
 src/Main/globals.cxx | 29 ++++++++++++++---------------
 1 file changed, 14 insertions(+), 15 deletions(-)

diff --git a/src/Main/globals.cxx b/src/Main/globals.cxx
index 29b791fe5..aa34a9660 100644
--- a/src/Main/globals.cxx
+++ b/src/Main/globals.cxx
@@ -56,7 +56,7 @@
 #include "fg_props.hxx"
 #include "fg_io.hxx"
 
-class AircraftResourceProvider : public simgear::ResourceProvider
+class AircraftResourceProvider : public simgear::ResourceProvider
 {
 public:
   AircraftResourceProvider() :
@@ -74,28 +74,27 @@ public:
   // test against the aircraft-dir property
     const char* aircraftDir = fgGetString("/sim/aircraft-dir");
     string_list aircraftDirPieces(sgPathBranchSplit(aircraftDir));
-    if (aircraftDirPieces.empty() || (aircraftDirPieces.back() != pieces[1])) {
-      return SGPath(); // current aircraft-dir does not match resource aircraft
-    }
-    
-    SGPath r(aircraftDir);
-    for (unsigned int i=2; i<pieces.size(); ++i) {
-      r.append(pieces[i]);
-    }
-    
-    if (r.exists()) {
-      SG_LOG(SG_IO, SG_INFO, "found path:" << aResource << " via /sim/aircraft-dir: " << r.str());
-      return r;
+    if (!aircraftDirPieces.empty() && (aircraftDirPieces.back() == pieces[1])) {
+        // current aircraft-dir matches resource aircraft
+        SGPath r(aircraftDir);
+        for (unsigned int i=2; i<pieces.size(); ++i) {
+          r.append(pieces[i]);
+        }
+        
+        if (r.exists()) {
+          SG_LOG(SG_IO, SG_INFO, "found path:" << aResource << " via /sim/aircraft-dir: " << r.str());
+          return r;
+        }
     }
   
-  // try each aircaft dir in turn
+  // try each aircraft dir in turn
     std::string res(aResource, 9); // resource path with 'Aircraft/' removed
     const string_list& dirs(globals->get_aircraft_paths());
     string_list::const_iterator it = dirs.begin();
     for (; it != dirs.end(); ++it) {
       SGPath p(*it, res);
       if (p.exists()) {
-        SG_LOG(SG_IO, SG_INFO, "found path:" << aResource << " in aircraft dir: " << r.str());
+        SG_LOG(SG_IO, SG_INFO, "found path:" << aResource << " in aircraft dir: " << *it);
         return p;
       }
     } // of aircraft path iteration