From: ehofman Date: Thu, 23 Dec 2004 13:32:01 +0000 (+0000) Subject: Melchior FRANZ: X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=d88fb32a731de54ddd0bbe279cbb6b1ff3208a42;p=simgear.git Melchior FRANZ: My recent fix for the load/save fgfs.sav feature was a bit too ambitious. While aliases lead to abortion before, I tried to copy them properly, although this wasn't a requirement. Unfortunately, this seems to have worked for absolute aliases only, not for relative ones, and hence broke several panel instruments. The attached patch backs most of the previous patch out again, and goes a simpler route: just ignore aliases. --- diff --git a/simgear/props/props.cxx b/simgear/props/props.cxx index 50b412cb..60a19aa4 100644 --- a/simgear/props/props.cxx +++ b/simgear/props/props.cxx @@ -969,9 +969,9 @@ SGPropertyNode::getPath (bool simplify) const } SGPropertyNode::Type -SGPropertyNode::getType (bool deref_alias) const +SGPropertyNode::getType () const { - if (_type == ALIAS && deref_alias) + if (_type == ALIAS) return _value.alias->getType(); else return _type; diff --git a/simgear/props/props.hxx b/simgear/props/props.hxx index c800f29d..a08d6ffa 100644 --- a/simgear/props/props.hxx +++ b/simgear/props/props.hxx @@ -850,10 +850,8 @@ public: /** * Get the type of leaf value, if any, for this node. - * When applied to an ALIAS node, deref_alias decides if the type - * of the referred node is to be returned (default), or ALIAS. */ - Type getType (bool deref_alias = true) const; + Type getType () const; /** diff --git a/simgear/props/props_io.cxx b/simgear/props/props_io.cxx index ec549011..0aba26ed 100644 --- a/simgear/props/props_io.cxx +++ b/simgear/props/props_io.cxx @@ -368,7 +368,6 @@ getTypeName (SGPropertyNode::Type type) case SGPropertyNode::STRING: return "string"; case SGPropertyNode::ALIAS: - return "alias"; case SGPropertyNode::NONE: return "unspecified"; } @@ -551,7 +550,7 @@ copyProperties (const SGPropertyNode *in, SGPropertyNode *out) // First, copy the actual value, // if any. if (in->hasValue()) { - switch (in->getType(false)) { + switch (in->getType()) { case SGPropertyNode::BOOL: if (!out->setBoolValue(in->getBoolValue())) retval = false; @@ -580,13 +579,9 @@ copyProperties (const SGPropertyNode *in, SGPropertyNode *out) if (!out->setUnspecifiedValue(in->getStringValue())) retval = false; break; - case SGPropertyNode::ALIAS: { - const char *path = in->getAliasTarget()->getPath(); - SGPropertyNode *node = out->getRootNode()->getNode(path, true); - out->alias(node); - break; - } default: + if (in->isAlias()) + break; string message = "Unknown internal SGPropertyNode type"; message += in->getType(); throw sg_error(message, "SimGear Property Reader");