From f640c6f55685335b90bef4af0c0e2a8893e209b4 Mon Sep 17 00:00:00 2001 From: jules Date: Thu, 24 Sep 2015 20:03:59 -0700 Subject: [PATCH] Made ValueTree::fromXml more resilient if given data containing text elements. --- .../values/juce_ValueTree.cpp | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/modules/juce_data_structures/values/juce_ValueTree.cpp b/modules/juce_data_structures/values/juce_ValueTree.cpp index 5800121735..8b6d2ac259 100644 --- a/modules/juce_data_structures/values/juce_ValueTree.cpp +++ b/modules/juce_data_structures/values/juce_ValueTree.cpp @@ -958,22 +958,26 @@ XmlElement* ValueTree::createXml() const ValueTree ValueTree::fromXml (const XmlElement& xml) { + if (! xml.isTextElement()) + { + ValueTree v (xml.getTagName()); + v.object->properties.setFromXmlAttributes (xml); + + forEachXmlChildElement (xml, e) + v.addChild (fromXml (*e), -1, nullptr); + + return v; + } + // ValueTrees don't have any equivalent to XML text elements! - jassert (! xml.isTextElement()); - - ValueTree v (xml.getTagName()); - v.object->properties.setFromXmlAttributes (xml); - - forEachXmlChildElement (xml, e) - v.addChild (fromXml (*e), -1, nullptr); - - return v; + jassertfalse; + return ValueTree(); } String ValueTree::toXmlString() const { const ScopedPointer xml (createXml()); - return xml != nullptr ? xml->createDocument ("") : String(); + return xml != nullptr ? xml->createDocument (StringRef()) : String(); } //==============================================================================