Re: [xml] error in moving nodes between documents: heap corruption detected



On Tue, Nov 30, 2004 at 12:10:33PM +0100, Tomas Sieger wrote:
Hi,
 I found a problem in moving document (D1) nodes into another
document (D2). It seems that the moved nodes still refer to some
data in the original document D1, so after D1 gets deleted,
D2 contains invalid nodes. The invalid nodes are revealed e.g.
when deleting D1 - glibc reports heap corruption.

  yes. There is a number of dependancies possibles from a node
to its surroundding document:
   - dictionnary for names and short text values
   - namespaces
   - entities references

  Moving nodes between documents is a tricky business.

The problem appears in libxml2-2.6.15 and newer. libxml2-2.6.14
does not cause the problem. I've discovered that this commit:

  http://cvs.gnome.org/viewcvs/libxml2/parser.c?r1=1.391&r2=1.392

  This enforces than nodes from a document always use names from
the document dictionnary. If you want to avoid that, pass the 
XML_PARSE_NODICT option to xmlRead... parsing functions.

  It is not a bug, it is a property of the documents. You can disable it
but you will loose on performances and memory consumption.

Daniel

-- 
Daniel Veillard      | Red Hat Desktop team http://redhat.com/
veillard redhat com  | libxml GNOME XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/



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