libxml++ r166 - in trunk: . libxml++



Author: murrayc
Date: Fri Mar  7 12:27:50 2008
New Revision: 166
URL: http://svn.gnome.org/viewvc/libxml++?rev=166&view=rev

Log:
2008-03-07  Deng Xiyue  <murrayc murrayc com>

* libxml++/document.cc:
* libxml++/document.h: Add a destructor 
(does not break ABI because the base class already has a 
virtual destructor) that calls xmlCleanupParser to match the 
existing call to xmlInitParser() in the constructor. Fixes 
a memory leak.
Bug #501168 (Matt G.)

Modified:
   trunk/ChangeLog
   trunk/libxml++/document.cc
   trunk/libxml++/document.h

Modified: trunk/libxml++/document.cc
==============================================================================
--- trunk/libxml++/document.cc	(original)
+++ trunk/libxml++/document.cc	Fri Mar  7 12:27:50 2008
@@ -137,11 +137,16 @@
 
 Document::Init::Init()
 {
-   xmlInitParser(); //Not always necessary, but necessary for thread safety.
-   xmlRegisterNodeDefault(on_libxml_construct);
-   xmlDeregisterNodeDefault(on_libxml_destruct);
-   xmlThrDefRegisterNodeDefault(on_libxml_construct);
-   xmlThrDefDeregisterNodeDefault(on_libxml_destruct);
+  xmlInitParser(); //Not always necessary, but necessary for thread safety.
+  xmlRegisterNodeDefault(on_libxml_construct);
+  xmlDeregisterNodeDefault(on_libxml_destruct);
+  xmlThrDefRegisterNodeDefault(on_libxml_construct);
+  xmlThrDefDeregisterNodeDefault(on_libxml_destruct);
+}
+
+Document::Init::~Init()
+{
+  xmlCleanupParser(); //As per xmlInitParser(), or memory leak will happen.
 }
 
 Document::Init Document::init_;

Modified: trunk/libxml++/document.h
==============================================================================
--- trunk/libxml++/document.h	(original)
+++ trunk/libxml++/document.h	Fri Mar  7 12:27:50 2008
@@ -53,6 +53,7 @@
   {
   public:
     Init();
+    virtual ~Init();
   };
 
   friend class DomParser;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]