diff options
author | Daniel Veillard <veillard@src.gnome.org> | 2004-04-29 17:14:25 +0000 |
---|---|---|
committer | Daniel Veillard <veillard@src.gnome.org> | 2004-04-29 17:14:25 +0000 |
commit | e2161a699bbd1b58fa90eb43fc94637cbbc29bc8 (patch) | |
tree | 64c8122a9b5c9bfb8c4be43c167ea6418125a5e4 /xmlreader.c | |
parent | 9ea6231ecef04c848b688355b8f7532dd5e4c6f8 (diff) | |
download | android_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.c | 7 |
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) || |