fixed the streaming property of the reader, it was generating tree faster
* xmlreader.c: fixed the streaming property of the reader,
it was generating tree faster than consuming it. Pointed out
by Nate Myers
* tree.c: fixed a bug in xmlSaveFormatFileEnc if passed a NULL doc
Daniel
diff --git a/xmlreader.c b/xmlreader.c
index 316ff15..7203217 100644
--- a/xmlreader.c
+++ b/xmlreader.c
@@ -606,8 +606,13 @@
while (((oldstate == XML_TEXTREADER_BACKTRACK) ||
(reader->node->children == NULL) ||
(reader->node->type == XML_ENTITY_REF_NODE) ||
- (reader->node->type == XML_DTD_NODE)) &&
+ (reader->node->type == XML_DTD_NODE) ||
+ (reader->node->type == XML_DOCUMENT_NODE) ||
+ (reader->node->type == XML_HTML_DOCUMENT_NODE)) &&
(reader->node->next == NULL) &&
+ ((reader->ctxt->node == NULL) ||
+ (reader->ctxt->node == reader->node) ||
+ (reader->ctxt->node == reader->node->parent)) &&
(reader->ctxt->nodeNr == olddepth) &&
(reader->ctxt->instate != XML_PARSER_EOF)) {
val = xmlTextReaderPushData(reader);
@@ -643,9 +648,11 @@
/*
* Cleanup of the old node
*/
- if (oldnode->type != XML_DTD_NODE) {
- xmlUnlinkNode(oldnode);
- xmlFreeNode(oldnode);
+ if ((reader->node->prev != NULL) &&
+ (reader->node->prev->type != XML_DTD_NODE)) {
+ xmlNodePtr tmp = reader->node->prev;
+ xmlUnlinkNode(tmp);
+ xmlFreeNode(tmp);
}
goto node_found;