]> git.saurik.com Git - wxWidgets.git/commitdiff
Fix memory leaks in wxXml unit test.
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 30 Mar 2011 14:16:13 +0000 (14:16 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 30 Mar 2011 14:16:13 +0000 (14:16 +0000)
Ensure that the root wxXmlNode is deleted by storing it in a wxScopedPtr
instead of a raw pointer.

See #11593.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67345 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

tests/xml/xmltest.cpp

index 7b1d8ebd5363e6a414753e291ab5efb2accfa75b..f04b10365f850084afd79a6ba176310bd3dae4ad 100644 (file)
@@ -22,6 +22,7 @@
 #endif // WX_PRECOMP
 
 #include "wx/xml/xml.h"
+#include "wx/scopedptr.h"
 #include "wx/sstream.h"
 
 #include <stdarg.h>
@@ -33,7 +34,7 @@
 namespace
 {
 
-void CheckXml(wxXmlNode *n, ...)
+void CheckXml(const wxScopedPtr<wxXmlNode>& n, ...)
 {
     va_list args;
     va_start(args, n);
@@ -49,7 +50,7 @@ void CheckXml(wxXmlNode *n, ...)
         CPPUNIT_ASSERT( child );
         CPPUNIT_ASSERT_EQUAL( childName, child->GetName() );
         CPPUNIT_ASSERT( child->GetChildren() == NULL );
-        CPPUNIT_ASSERT( child->GetParent() == n );
+        CPPUNIT_ASSERT( child->GetParent() == n.get() );
 
         child = child->GetNext();
     }
@@ -96,7 +97,7 @@ CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( XmlTestCase, "XmlTestCase" );
 
 void XmlTestCase::InsertChild()
 {
-    wxXmlNode *root = new wxXmlNode(wxXML_ELEMENT_NODE, "root");
+    wxScopedPtr<wxXmlNode> root(new wxXmlNode(wxXML_ELEMENT_NODE, "root"));
     root->AddChild(new wxXmlNode(wxXML_ELEMENT_NODE, "1"));
     wxXmlNode *two = new wxXmlNode(wxXML_ELEMENT_NODE, "2");
     root->AddChild(two);
@@ -116,7 +117,7 @@ void XmlTestCase::InsertChild()
 
 void XmlTestCase::InsertChildAfter()
 {
-    wxXmlNode *root = new wxXmlNode(wxXML_ELEMENT_NODE, "root");
+    wxScopedPtr<wxXmlNode> root(new wxXmlNode(wxXML_ELEMENT_NODE, "root"));
 
     root->InsertChildAfter(new wxXmlNode(wxXML_ELEMENT_NODE, "1"), NULL);
     CheckXml(root, "1", NULL);