diff --git a/ChangeLog b/ChangeLog index cfe766ed..8123da5f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Dec 30 12:39:55 CET 2002 Daniel Veillard + + * xmlreader.c python/tests/reader.py: fixed a limit case problem + with "" + Mon Dec 30 11:53:44 CET 2002 Daniel Veillard * SAX.c: warn on xmlns:prefix="foo" diff --git a/python/tests/reader.py b/python/tests/reader.py index 75d6d8d0..c8741603 100755 --- a/python/tests/reader.py +++ b/python/tests/reader.py @@ -301,6 +301,28 @@ if reader.NamespaceUri() != "http://www.w3.org/2000/xmlns/" or \ print "test7: failed to read the namespace node" sys.exit(1) +# +# Test for a limit case: +# +f = StringIO.StringIO("""""") +input = libxml2.inputBuffer(f) +reader = input.newTextReader("test8") +ret = reader.Read() +if ret != 1: + print "test8: failed to read the node" + sys.exit(1) +if reader.Name() != "a" or reader.IsEmptyElement() != 1: + print "test8: failed to analyze the node" + sys.exit(1) +ret = reader.Read() +if ret != 0: + print "test8: failed to detect the EOF" + sys.exit(1) + + +# +# cleanup for memory allocation counting +# del f del input del reader diff --git a/xmlreader.c b/xmlreader.c index 3bca6c8f..2b2436d6 100644 --- a/xmlreader.c +++ b/xmlreader.c @@ -264,7 +264,9 @@ xmlTextReaderPushData(xmlTextReaderPtr reader) { if (val <= 0) { reader->mode = XML_TEXTREADER_MODE_EOF; reader->state = oldstate; - return(val); + if ((oldstate != XML_TEXTREADER_START) || + (reader->ctxt->myDoc != NULL)) + return(val); } } else break;