On Tue, Jan 19, 2010 at 03:40:30PM +0100, Martin B. wrote: > Daniel Veillard wrote: > >On Thu, Jan 14, 2010 at 02:59:50AM +0100, Aron Szabo wrote: > >>Hi! > >> > >>If I use the library in a threaded program and call > >>xmlCleanupParser() I can't reinitialize it. > >> > >>So here's what happens: > >> > >>1. xmlCleanupThreads() is called from xmlCleanupParser() > >>2. the global key is deleted by xmlCleanupParser() which was created > >>by xmlOnceInit() > >>... > > > > That makes sense. there is a big problem anyway with > >xmlCleanupParser() most people seems to think it need to be used after > >parsing while it's a library global operation and really should not > >be called after parsing but only when the library is not in use anymore. > > > >So overall I'm tempted to change xmlCleanupParser() to become an empty > >routine, and rename the real function as xmlCleanupLibrary(). > >That way the various shared libraries deployed with that bug won't need > >to be changed specifically, avoiding crashes when multiple libraries > >using libxml2 are used. Then your patch should be applied to the new > >xmlCleanupLibrary() function. > > > > Opinions ? > > > > Makes sense. Though all people that use it correctly will have to > update their sources, which kind of seems unfair :-)
Agreed, but the balance of damages is not the same, on one hand you have a minimal one-time fixed size small leak, and on the other side you get an ugly crash usually hard to debug because it becomes an async error when using the library later. > Best thing would be if xmlCleanupParser() would be removed completely, no? That is impossible, for ABI compatibility, Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ [email protected] | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ _______________________________________________ xml mailing list, project page http://xmlsoft.org/ [email protected] http://mail.gnome.org/mailman/listinfo/xml
