Normalize XML property name style, preserving old session loading (on load _ will...
[ardour.git] / libs / pbd / xml++.cc
index ec1ca5d2b9e0ba5c4605106c99a067d4f4592e8c..a42923132bc3042eef8d12fef9a5f32e04dc56a1 100644 (file)
@@ -278,22 +278,21 @@ XMLNode::children(const string& n) const
 {
        /* returns all children matching name */
 
-       static XMLNodeList retval;
        XMLNodeConstIterator cur;
        
        if (n.empty()) {
                return _children;
        }
-               
-       retval.erase(retval.begin(), retval.end());
+
+       _selected_children.clear();
        
        for (cur = _children.begin(); cur != _children.end(); ++cur) {
                if ((*cur)->name() == n) {
-                       retval.insert(retval.end(), *cur);
+                       _selected_children.insert(_selected_children.end(), *cur);
                }
        }
                
-       return retval;
+       return _selected_children;
 }
 
 XMLNode *
@@ -476,6 +475,12 @@ XMLProperty::XMLProperty(const string &n, const string &v)
        : _name(n), 
        _value(v) 
 { 
+       // Normalize property name (replace '_' with '-' as old session are inconsistent)
+       for (size_t i = 0; i < _name.length(); ++i) {
+               if (_name[i] == '_') {
+                       _name[i] = '-';
+               }
+       }
 }
 
 XMLProperty::~XMLProperty()