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



Thanks for the quick answer!

Daniel Veillard wrote:
On Tue, Nov 30, 2004 at 12:10:33PM +0100, Tomas Sieger wrote:
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.

Is it also possible to specify such a flag when parsing using

  ctx=xmlCreatePushParserCtxt(...);
  xmlParseChunk(...);
  doc=ctx->myDoc;
  xmlFreeParserCtxt(ctx);
?

Or, alternatively, can one "unlink" ALL references into the original document when moving a node into another document?

  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.

But, unfortunately, IMHO, the parser API semantics has changed.
It implies that xmlsec (up to version 1.2.6) does not work with libxml2 versions 2.6.15 and higher (I assume that xmlsec code: xmlSecParseMemoryExt and xmlSecReplaceNodeBuffer is valid in respect to the libxml2 reader/parser API).

Tomas



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