Wasn't initializing member in copy c'tor.
[shibboleth/cpp-xmltooling.git] / xmltooling / validation / AbstractValidatingXMLObject.cpp
index 78f5cbb..6df3ab4 100644 (file)
@@ -35,6 +35,15 @@ AbstractValidatingXMLObject::ValidatorWrapper::~ValidatorWrapper()
     for_each(v.begin(),v.end(),cleanup<Validator>());\r
 }\r
 \r
+AbstractValidatingXMLObject::AbstractValidatingXMLObject(const AbstractValidatingXMLObject& src)\r
+    : AbstractXMLObject(src), m_validators(NULL)\r
+{\r
+    if (src.m_validators) {\r
+        m_validators=new ValidatorWrapper();\r
+        xmltooling::clone(src.m_validators->v,m_validators->v);\r
+    }\r
+}\r
+\r
 AbstractValidatingXMLObject::~AbstractValidatingXMLObject()\r
 {\r
     delete m_validators;\r
@@ -78,6 +87,7 @@ void AbstractValidatingXMLObject::validate(bool validateDescendants) const
     }\r
     \r
     if (validateDescendants && hasChildren()) {\r
-        for_each(m_children.begin(),m_children.end(),bind2nd(_validate(),validateDescendants));\r
+        const list<XMLObject*>& children=getOrderedChildren();\r
+        for_each(children.begin(),children.end(),bind2nd(_validate(),validateDescendants));\r
     }\r
 }\r