diff options
author | Richard Linden <none@none> | 2012-01-23 17:39:09 -0800 |
---|---|---|
committer | Richard Linden <none@none> | 2012-01-23 17:39:09 -0800 |
commit | fedbe2fd9792ebb69fc680586cb6488ebc4f1423 (patch) | |
tree | a2c730f24fa0a30f70434cb0b2ab4be48ec8f5e2 | |
parent | 133b9a4036a9a0230ad5ed26862fdf28d5c523dc (diff) | |
parent | e219fc30ba351e992c3c559f92830a4ca54ca2d3 (diff) |
Automated merge with ssh://hg.lindenlab.com/richard/viewer-experience
-rw-r--r-- | indra/llxml/llxmlnode.cpp | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/indra/llxml/llxmlnode.cpp b/indra/llxml/llxmlnode.cpp index 2b4a0fc2a1..3d4e6f9a0b 100644 --- a/indra/llxml/llxmlnode.cpp +++ b/indra/llxml/llxmlnode.cpp @@ -631,13 +631,14 @@ bool LLXMLNode::updateNode( } //update all of node's children with updateNodes children that match name - LLXMLNodePtr child; + LLXMLNodePtr child = node->getFirstChild(); + LLXMLNodePtr last_child = child; LLXMLNodePtr updateChild; for (updateChild = update_node->getFirstChild(); updateChild.notNull(); updateChild = updateChild->getNextSibling()) { - for (child = node->getFirstChild(); child.notNull(); child = child->getNextSibling()) + while(child.notNull()) { std::string nodeName; std::string updateName; @@ -656,6 +657,22 @@ bool LLXMLNode::updateNode( if ((nodeName != "") && (updateName == nodeName)) { updateNode(child, updateChild); + last_child = child; + child = child->getNextSibling(); + if (child.isNull()) + { + child = node->getFirstChild(); + } + break; + } + + child = child->getNextSibling(); + if (child.isNull()) + { + child = node->getFirstChild(); + } + if (child == last_child) + { break; } } @@ -882,11 +899,8 @@ bool LLXMLNode::getLayeredXMLNode(LLXMLNodePtr& root, for (itor = paths.begin(), ++itor; itor != paths.end(); ++itor) { - std::string nodeName; - std::string updateName; - std::string layer_filename = *itor; - if(layer_filename.empty()) + if(layer_filename.empty() || layer_filename == filename) { // no localized version of this file, that's ok, keep looking continue; @@ -898,6 +912,9 @@ bool LLXMLNode::getLayeredXMLNode(LLXMLNodePtr& root, return false; } + std::string nodeName; + std::string updateName; + updateRoot->getAttributeString("name", updateName); root->getAttributeString("name", nodeName); |