1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-03-23 02:50:08 +03:00

xmlreader: Fix EOF detection in xmlTextReaderPushData

This commit is contained in:
Nick Wellnhofer 2023-09-21 16:29:28 +02:00
parent 89ee0369d2
commit 81741ea4c0

View File

@ -727,11 +727,10 @@ xmlTextReaderPushData(xmlTextReaderPtr reader) {
*/
if (reader->mode != XML_TEXTREADER_MODE_EOF) {
val = xmlParserInputBufferRead(reader->input, 4096);
if ((val == 0) &&
(reader->input->readcallback == NULL)) {
if (val == 0) {
if (xmlBufUse(inbuf) == reader->cur) {
reader->mode = XML_TEXTREADER_MODE_EOF;
reader->state = oldstate;
break;
}
} else if (val < 0) {
xmlGenericError(xmlGenericErrorContext,
@ -739,10 +738,6 @@ xmlTextReaderPushData(xmlTextReaderPtr reader) {
reader->mode = XML_TEXTREADER_MODE_EOF;
reader->state = oldstate;
return(val);
} else if (val == 0) {
/* mark the end of the stream and process the remains */
reader->mode = XML_TEXTREADER_MODE_EOF;
break;
}
} else
@ -772,6 +767,7 @@ xmlTextReaderPushData(xmlTextReaderPtr reader) {
break;
}
}
reader->state = oldstate;
/*
* Discard the consumed input when needed and possible
@ -808,7 +804,6 @@ xmlTextReaderPushData(xmlTextReaderPtr reader) {
}
}
}
reader->state = oldstate;
if (reader->ctxt->wellFormed == 0) {
reader->mode = XML_TEXTREADER_MODE_EOF;
return(-1);