aboutsummaryrefslogtreecommitdiffstats
path: root/xmlreader.c
diff options
context:
space:
mode:
authorDaniel Veillard <veillard@src.gnome.org>2004-04-29 17:14:25 +0000
committerDaniel Veillard <veillard@src.gnome.org>2004-04-29 17:14:25 +0000
commite2161a699bbd1b58fa90eb43fc94637cbbc29bc8 (patch)
tree64c8122a9b5c9bfb8c4be43c167ea6418125a5e4 /xmlreader.c
parent9ea6231ecef04c848b688355b8f7532dd5e4c6f8 (diff)
downloadandroid_external_libxml2-e2161a699bbd1b58fa90eb43fc94637cbbc29bc8.tar.gz
android_external_libxml2-e2161a699bbd1b58fa90eb43fc94637cbbc29bc8.tar.bz2
android_external_libxml2-e2161a699bbd1b58fa90eb43fc94637cbbc29bc8.zip
fix a nasty problem with reading over the end fix a reported memory leak
* xmlreader.c: fix a nasty problem with reading over the end * xmlsave.c: fix a reported memory leak apparently Daniel
Diffstat (limited to 'xmlreader.c')
-rw-r--r--xmlreader.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/xmlreader.c b/xmlreader.c
index f1757593..75b73ffe 100644
--- a/xmlreader.c
+++ b/xmlreader.c
@@ -1179,6 +1179,8 @@ xmlTextReaderRead(xmlTextReaderPtr reader) {
fprintf(stderr, "\nREAD ");
DUMP_READER
#endif
+ if (reader->mode == XML_TEXTREADER_DONE)
+ return(0);
reader->curnode = NULL;
if (reader->mode == XML_TEXTREADER_MODE_INITIAL) {
reader->mode = XML_TEXTREADER_MODE_INTERACTIVE;
@@ -1215,12 +1217,15 @@ xmlTextReaderRead(xmlTextReaderPtr reader) {
oldnode = reader->node;
get_next_node:
+ if (reader->node == NULL)
+ return(-1);
+
/*
* If we are not backtracking on ancestors or examined nodes,
* that the parser didn't finished or that we arent at the end
* of stream, continue processing.
*/
- while ((reader->node->next == NULL) &&
+ while ((reader->node != NULL) && (reader->node->next == NULL) &&
(reader->ctxt->nodeNr == olddepth) &&
((oldstate == XML_TEXTREADER_BACKTRACK) ||
(reader->node->children == NULL) ||