1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2024-10-26 12:25:09 +03:00

Fix xmlTextReaderNext with preparsed document

This fixes the traversal of parent nodes using xmlTextReaderNext()
when the reader is based on a preparsed document (created using
xmlReaderWalker(doc)).

Without this fix the parser will abort even though there are parent
nodes it should traverse to, if it is not currently on an element or
attribute node. This is incorrect, since it can be for example on a
text node when it needs to enter backtracking.
This commit is contained in:
Felix Bünemann 2018-06-23 13:08:46 +02:00 committed by Nick Wellnhofer
parent c65c9e8ee0
commit d2ef114c6b

View File

@ -1917,12 +1917,9 @@ xmlTextReaderNextTree(xmlTextReaderPtr reader)
/* if reader->node->next is NULL mean no subtree for current node,
so need to move to sibling of parent node if present */
if ((reader->node->type == XML_ELEMENT_NODE) ||
(reader->node->type == XML_ATTRIBUTE_NODE)) {
reader->state = XML_TEXTREADER_BACKTRACK;
/* This will move to parent if present */
xmlTextReaderRead(reader);
}
reader->state = XML_TEXTREADER_BACKTRACK;
/* This will move to parent if present */
xmlTextReaderRead(reader);
}
if (reader->node->next != 0) {