diff options
author | Mike Hommey <glandium@debian.org> | 2007-04-17 20:40:00 +0200 |
---|---|---|
committer | Mike Hommey <glandium@debian.org> | 2007-04-17 20:40:00 +0200 |
commit | 789259a1b6850d30acffbb62b11456b9ed7a8f59 (patch) | |
tree | 842f2f9042a4264898ec29078aa029640078c393 /xmlreader.c | |
parent | 968041a8b2ec86c39b5074024ce97d136ecd9a95 (diff) | |
download | libxml2-789259a1b6850d30acffbb62b11456b9ed7a8f59.tar.gz |
Load /tmp/libxml2-2.6.28 intoupstream/2.6.28.dfsg
libxml2/branches/upstream/current.
Diffstat (limited to 'xmlreader.c')
-rw-r--r-- | xmlreader.c | 51 |
1 files changed, 33 insertions, 18 deletions
diff --git a/xmlreader.c b/xmlreader.c index c8bcf7b..d7bddec 100644 --- a/xmlreader.c +++ b/xmlreader.c @@ -869,13 +869,13 @@ xmlTextReaderPushData(xmlTextReaderPtr reader) { * parser. */ else if (reader->mode == XML_TEXTREADER_MODE_EOF) { - if (reader->mode != XML_TEXTREADER_DONE) { + if (reader->state != XML_TEXTREADER_DONE) { s = inbuf->use - reader->cur; val = xmlParseChunk(reader->ctxt, (const char *) &inbuf->content[reader->cur], s, 1); reader->cur = inbuf->use; - reader->mode = XML_TEXTREADER_DONE; + reader->state = XML_TEXTREADER_DONE; if ((val != 0) || (reader->ctxt->wellFormed == 0)) return(-1); } @@ -1169,8 +1169,10 @@ xmlTextReaderDoExpand(xmlTextReaderPtr reader) { if (reader->mode == XML_TEXTREADER_MODE_EOF) return(1); val = xmlTextReaderPushData(reader); - if (val < 0) + if (val < 0){ + reader->mode = XML_TEXTREADER_MODE_ERROR; return(-1); + } } while(reader->mode != XML_TEXTREADER_MODE_EOF); return(1); } @@ -1257,17 +1259,23 @@ xmlTextReaderRead(xmlTextReaderPtr reader) { */ do { val = xmlTextReaderPushData(reader); - if (val < 0) + if (val < 0){ + reader->mode = XML_TEXTREADER_MODE_ERROR; + reader->state = XML_TEXTREADER_ERROR; return(-1); + } } while ((reader->ctxt->node == NULL) && ((reader->mode != XML_TEXTREADER_MODE_EOF) && - (reader->mode != XML_TEXTREADER_DONE))); + (reader->state != XML_TEXTREADER_DONE))); if (reader->ctxt->node == NULL) { if (reader->ctxt->myDoc != NULL) { reader->node = reader->ctxt->myDoc->children; } - if (reader->node == NULL) + if (reader->node == NULL){ + reader->mode = XML_TEXTREADER_MODE_ERROR; + reader->state = XML_TEXTREADER_ERROR; return(-1); + } reader->state = XML_TEXTREADER_ELEMENT; } else { if (reader->ctxt->myDoc != NULL) { @@ -1287,7 +1295,7 @@ xmlTextReaderRead(xmlTextReaderPtr reader) { get_next_node: if (reader->node == NULL) { - if (reader->mode == XML_TEXTREADER_DONE) + if (reader->mode == XML_TEXTREADER_MODE_EOF) return(0); else return(-1); @@ -1314,8 +1322,11 @@ get_next_node: (reader->ctxt->node == reader->node->parent)) && (reader->ctxt->instate != XML_PARSER_EOF)) { val = xmlTextReaderPushData(reader); - if (val < 0) + if (val < 0){ + reader->mode = XML_TEXTREADER_MODE_ERROR; + reader->state = XML_TEXTREADER_ERROR; return(-1); + } if (reader->node == NULL) goto node_end; } @@ -1394,9 +1405,9 @@ get_next_node: (reader->node->type == XML_DOCB_DOCUMENT_NODE) || #endif (reader->node->type == XML_HTML_DOCUMENT_NODE)) { - if (reader->mode != XML_TEXTREADER_DONE) { + if (reader->mode != XML_TEXTREADER_MODE_EOF) { val = xmlParseChunk(reader->ctxt, "", 0, 1); - reader->mode = XML_TEXTREADER_DONE; + reader->state = XML_TEXTREADER_DONE; if (val != 0) return(-1); } @@ -1550,7 +1561,7 @@ node_found: #endif /* LIBXML_PATTERN_ENABLED */ return(1); node_end: - reader->mode = XML_TEXTREADER_DONE; + reader->state = XML_TEXTREADER_DONE; return(0); } @@ -4167,9 +4178,9 @@ xmlTextReaderSetSchema(xmlTextReaderPtr reader, xmlSchemaPtr schema) { * * Use RelaxNG to validate the document as it is processed. * Activation is only possible before the first Read(). - * if @rng is NULL, then RelaxNG validation is desactivated. + * if @rng is NULL, then RelaxNG validation is deactivated. * - * Returns 0 in case the RelaxNG validation could be (des)activated and + * Returns 0 in case the RelaxNG validation could be (de)activated and * -1 in case of error. */ int @@ -4207,8 +4218,8 @@ xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader, const char *rng) { xmlTextReaderValidityWarningRelay, reader); } - if (reader->sErrorFunc != NULL) { - xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, + if (reader->sErrorFunc != NULL) { + xmlRelaxNGSetValidStructuredErrors(reader->rngValidCtxt, xmlTextReaderValidityStructuredRelay, reader); } @@ -4846,22 +4857,26 @@ xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader, /** * xmlTextReaderSetup: * @reader: an XML reader + * @input: xmlParserInputBufferPtr used to feed the reader, will + * be destroyed with it. * @URL: the base URL to use for the document * @encoding: the document encoding, or NULL * @options: a combination of xmlParserOption - * @reuse: keep the context for reuse * * Setup an XML reader with new options * * Returns 0 in case of success and -1 in case of error. */ -static int +int xmlTextReaderSetup(xmlTextReaderPtr reader, xmlParserInputBufferPtr input, const char *URL, const char *encoding, int options) { - if (reader == NULL) + if (reader == NULL) { + if (input != NULL) + xmlFreeParserInputBuffer(input); return (-1); + } /* * we force the generation of compact text nodes on the reader |