X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6f24b81707fe53df2e2458ea928e071712f3bc72..12bb29f5432174ecbd65549bda832d70d34a98ae:/src/xml/xml.cpp?ds=sidebyside diff --git a/src/xml/xml.cpp b/src/xml/xml.cpp index f9209d0fff..0fc27c246b 100644 --- a/src/xml/xml.cpp +++ b/src/xml/xml.cpp @@ -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) { @@ -87,6 +91,22 @@ wxXmlNode::wxXmlNode(const wxXmlNode& node) } wxXmlNode::~wxXmlNode() +{ + DoFree(); +} + +wxXmlNode& wxXmlNode::operator=(const wxXmlNode& node) +{ + if ( &node != this ) + { + DoFree(); + DoCopy(node); + } + + return *this; +} + +void wxXmlNode::DoFree() { wxXmlNode *c, *c2; for (c = m_children; c; c = c2) @@ -103,14 +123,6 @@ wxXmlNode::~wxXmlNode() } } -wxXmlNode& wxXmlNode::operator=(const wxXmlNode& node) -{ - wxDELETE(m_attrs); - wxDELETE(m_children); - DoCopy(node); - return *this; -} - void wxXmlNode::DoCopy(const wxXmlNode& node) { m_type = node.m_type; @@ -451,7 +463,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 +471,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); }