Can someone commit this patch for me? I am away and can't commit to CVS
right now.
Patch fixes tree corruption when a doc is passed to
xmlParseBalancedChunkMemoryRecover and something using the XML namespace
is parsed from the chunk. This patch makes sure that the XML namespapce
has already been created on the origional document and sets oldNS from
the origional document on newDoc. This way the XML namespace from the
origional document will be used on the tree being created, so when tree
is added to origional document and newDoc is destroyed the namespace
will be valid.
Currently once newDoc is free'd (causing the XML namespace created just
for that document to be freed), its use in the new tree is now garbage.
rans the tests and they were fine.
Rob
Index: parser.c
===================================================================
RCS file: /cvs/gnome/libxml2/parser.c,v
retrieving revision 1.453
diff -c -r1.453 parser.c
*** parser.c 13 Jul 2006 06:29:52 -0000 1.453
--- parser.c 11 Sep 2006 18:56:23 -0000
***************
*** 11903,11908 ****
--- 11903,11911 ----
} else {
ctxt->myDoc = newDoc;
newDoc->children->doc = doc;
+ /* Ensure that doc has XML spec namespace */
+ xmlSearchNsByHref(doc, (xmlNodePtr)doc, XML_XML_NAMESPACE);
+ newDoc->oldNs = doc->oldNs;
}
ctxt->instate = XML_PARSER_CONTENT;
ctxt->depth = depth;
***************
*** 11963,11968 ****
--- 11966,11972 ----
xmlFreeParserCtxt(ctxt);
newDoc->intSubset = NULL;
newDoc->extSubset = NULL;
+ newDoc->oldNs = NULL;
xmlFreeDoc(newDoc);
return(ret);
_______________________________________________
xml mailing list, project page http://xmlsoft.org/
[email protected]
http://mail.gnome.org/mailman/listinfo/xml