1
0
Fork 0

src/Main/fg_props.cxx: fix segv with --enable-freeze.

The problem was that FGProperties::bind()'s call of
tiedProperties.Tie("/sim/freeze/master", ..., &FGProperties::setFreeze)
was calling FGProperties::setFreeze(true) before it returned, but we
were only setting _simFreezeNode *after* tiedProperties.Tie() had
returned.

tiedProperties.Tie() simply returns the node that it was given as its
first arg, so we simply sets _simFreezeNode to the value it would have
taken later, before calling tiedProperties.Tie().
This commit is contained in:
Julian Smith 2023-07-18 10:47:36 +01:00
parent 5cf6e4c263
commit a207cdd207

View file

@ -418,7 +418,8 @@ FGProperties::bind ()
// Simulation
_tiedProperties.Tie("/sim/logging/priority", getLoggingPriority, setLoggingPriority);
_tiedProperties.Tie("/sim/logging/classes", getLoggingClasses, setLoggingClasses);
_simFreezeNode = _tiedProperties.Tie("/sim/freeze/master", this, &FGProperties::getFreeze, &FGProperties::setFreeze);
_simFreezeNode = fgGetNode("/sim/freeze/master", true);
_tiedProperties.Tie(_simFreezeNode, this, &FGProperties::getFreeze, &FGProperties::setFreeze);
_simFreezeNode->setAttribute(SGPropertyNode::LISTENER_SAFE, true);
_tiedProperties.Tie<double>("/sim/time/elapsed-sec", getElapsedTime_sec);