1
0
Fork 0

Frederic Bouvier:

I think I found the problem in props.hxx. I have an exception when copying properties. An alias to a property that has no value trigger this exception. The code that generate that is in AIManager.cxx  :

void FGAIAircraft::bind() {
   FGAIBase::bind();

   props->tie("controls/gear/gear-down",
              SGRawValueMethods<FGAIAircraft,bool>(*this,
                                             &FGAIAircraft::_getGearDown));

   props->getNode("controls/lighting/landing-lights", true)
          ->alias("controls/gear/gear-down");
}

controls/gear/gear-down has no value ( _type == NONE ) and controls/lighting/landing-lights is copied somewhere.


Erik:

Frederic's fix was to change props.hxx but he has expressed his doubts.
For now I've commented out the line that causes the problem so we have more
time to look deeper into the problem.

cvs -z4 -q diff -u props.hxx (in directory I:\FlightGear\cvs\SimGear\simgear\props\)
Index: props.hxx
===================================================================
RCS file: /var/cvs/SimGear-0.3/SimGear/simgear/props/props.hxx,v
retrieving revision 1.4
diff -u -r1.4 props.hxx
--- props.hxx	19 Sep 2004 09:08:12 -0000	1.4
+++ props.hxx	21 Oct 2004 07:10:54 -0000
@@ -622,7 +622,7 @@
   /**
    * Test whether this node contains a primitive leaf value.
    */
-  bool hasValue () const { return (_type != NONE); }
+  bool hasValue () const { return (_type != ALIAS && _type != NONE) || (_type == ALIAS && _value.alias->_type != NONE); }


   /**
This commit is contained in:
ehofman 2004-10-21 09:21:05 +00:00
parent 3d3922cd46
commit 7d1ec00a2b

View file

@ -81,9 +81,10 @@ void FGAIAircraft::bind() {
props->tie("controls/gear/gear-down", props->tie("controls/gear/gear-down",
SGRawValueMethods<FGAIAircraft,bool>(*this, SGRawValueMethods<FGAIAircraft,bool>(*this,
&FGAIAircraft::_getGearDown)); &FGAIAircraft::_getGearDown));
#if 0
props->getNode("controls/lighting/landing-lights", true) props->getNode("controls/lighting/landing-lights", true)
->alias("controls/gear/gear-down"); ->alias("controls/gear/gear-down");
#endif
} }
void FGAIAircraft::unbind() { void FGAIAircraft::unbind() {