On Thu, Apr 10, 2014 at 2:30 PM, Nikolay Sivov <bungleh...@gmail.com> wrote:
> On 4/10/2014 16:20, Bart De Schuymer wrote: > > Hello, > > We tried using libxml2 configured with the --with-fexceptions option and > have identified a memory leak when our C++ startElement callback throws an > exception. > The cause of the leak is as follows: > xmlParseStartTag frees all attribute values after calling the startElement > callback, but since an exception is thrown in the callback, this cleanup > code isn't executed. > xmlFreeParserCtxt only frees ctxt->atts: it doesn't try to free any > leftover attribute values. > > We tried to patch libxml2 to fix this issue but ran into errors when > running make valgrind ("Memory tag error occurs"). So we decided to catch > the exceptions in our callback instead which effectively prevents the > memory leak from occurring. > > Yes, you should handle that on your side. libxml2 is a C library, so you > can't handle cpp features in it, you could try of course to maintain your > own version of libxml2 extended with exception handler wrappers for all > callbacks you need, but it's a strange thing to do. > I see. If that's the official statement then it is a bad idea to offer the --with-fexceptions flag at configuration time. Especially since there is no mention of the accompanying memory leaks. Best regards, Bart
_______________________________________________ xml mailing list, project page http://xmlsoft.org/ xml@gnome.org https://mail.gnome.org/mailman/listinfo/xml