]> git.saurik.com Git - wxWidgets.git/blobdiff - src/xml/xml.cpp
Fix bug in wxFileName::Exists("/").
[wxWidgets.git] / src / xml / xml.cpp
index 0e82fffd01181cfef98e95292364764c31d6efe5..ee78a9aca4a2da3a414c55c61ae1645de6a1f2b8 100644 (file)
@@ -58,6 +58,8 @@ wxXmlNode::wxXmlNode(wxXmlNode *parent,wxXmlNodeType type,
       m_lineNo(lineNo),
       m_noConversion(false)
 {
+    wxASSERT_MSG ( type != wxXML_ELEMENT_NODE || content.empty(), "element nodes can't have content" );
+
     if (m_parent)
     {
         if (m_parent->m_children)
@@ -77,7 +79,9 @@ wxXmlNode::wxXmlNode(wxXmlNodeType type, const wxString& name,
       m_attrs(NULL), m_parent(NULL),
       m_children(NULL), m_next(NULL),
       m_lineNo(lineNo), m_noConversion(false)
-{}
+{
+    wxASSERT_MSG ( type != wxXML_ELEMENT_NODE || content.empty(), "element nodes can't have content" );
+}
 
 wxXmlNode::wxXmlNode(const wxXmlNode& node)
 {
@@ -451,7 +455,7 @@ void wxXmlDocument::DoCopy(const wxXmlDocument& doc)
 bool wxXmlDocument::Load(const wxString& filename, const wxString& encoding, int flags)
 {
     wxFileInputStream stream(filename);
-    if (!stream.Ok())
+    if (!stream.IsOk())
         return false;
     return Load(stream, encoding, flags);
 }
@@ -459,7 +463,7 @@ bool wxXmlDocument::Load(const wxString& filename, const wxString& encoding, int
 bool wxXmlDocument::Save(const wxString& filename, int indentstep) const
 {
     wxFileOutputStream stream(filename);
-    if (!stream.Ok())
+    if (!stream.IsOk())
         return false;
     return Save(stream, indentstep);
 }
@@ -505,6 +509,12 @@ wxXmlNode *wxXmlDocument::DetachRoot()
 
 void wxXmlDocument::SetRoot(wxXmlNode *root)
 {
+    if (root)
+    {
+        wxASSERT_MSG( root->GetType() == wxXML_ELEMENT_NODE,
+                      "Can only set an element type node as root" );
+    }
+
     wxXmlNode *node = m_docNode;
     if (node)
     {
@@ -515,7 +525,7 @@ void wxXmlDocument::SetRoot(wxXmlNode *root)
             prev = node;
             node = node->GetNext();
         }
-        if (node)
+        if (node && root)
         {
             root->SetNext( node->GetNext() );
             wxDELETE(node);
@@ -528,8 +538,10 @@ void wxXmlDocument::SetRoot(wxXmlNode *root)
     else
     {
         m_docNode = new wxXmlNode(wxXML_DOCUMENT_NODE, wxEmptyString);
+        m_docNode->SetChildren(root);
     }
-    root->SetParent(m_docNode);
+    if (root)
+        root->SetParent(m_docNode);
 }
 
 void wxXmlDocument::AppendToProlog(wxXmlNode *node)