diff options
author | Mike Hommey <mh@glandium.org> | 2004-04-19 05:38:48 +0000 |
---|---|---|
committer | Mike Hommey <mh@glandium.org> | 2004-04-19 05:38:48 +0000 |
commit | 81bcf076ea11e114a60e429338a15748066de163 (patch) | |
tree | 276010ab5d17f27a96c05f77004aa84a1763af7b /xmlreader.c | |
parent | d09ab089457ae3c20cc98f9afa03379c6ebf9598 (diff) | |
download | libxml2-81bcf076ea11e114a60e429338a15748066de163.tar.gz |
Load /tmp/tmp.LovooJ/libxml2-2.6.9 intoupstream/2.6.9
packages/libxml2/branches/upstream/current.
Diffstat (limited to 'xmlreader.c')
-rw-r--r-- | xmlreader.c | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/xmlreader.c b/xmlreader.c index e1c2ef8..41083ad 100644 --- a/xmlreader.c +++ b/xmlreader.c @@ -2053,19 +2053,12 @@ xmlTextReaderClose(xmlTextReaderPtr reader) { reader->curnode = NULL; reader->mode = XML_TEXTREADER_MODE_CLOSED; if (reader->ctxt != NULL) { + xmlStopParser(reader->ctxt); if (reader->ctxt->myDoc != NULL) { if (reader->preserve == 0) xmlTextReaderFreeDoc(reader, reader->ctxt->myDoc); reader->ctxt->myDoc = NULL; } - if (reader->allocs & XML_TEXTREADER_CTXT) { - xmlFreeParserCtxt(reader->ctxt); - reader->allocs -= XML_TEXTREADER_CTXT; - } - } - if (reader->sax != NULL) { - xmlFree(reader->sax); - reader->sax = NULL; } if ((reader->input != NULL) && (reader->allocs & XML_TEXTREADER_INPUT)) { xmlFreeParserInputBuffer(reader->input); @@ -2204,6 +2197,10 @@ xmlTextReaderGetAttributeNs(xmlTextReaderPtr reader, const xmlChar *localName, * parser, set its state to End Of File and return the input stream with * what is left that the parser did not use. * + * The implementation is not good, the parser certainly procgressed past + * what's left in reader->input, and there is an allocation problem. Best + * would be to rewrite it differently. + * * Returns the xmlParserInputBufferPtr attached to the XML or NULL * in case of error. */ @@ -2220,22 +2217,16 @@ xmlTextReaderGetRemainder(xmlTextReaderPtr reader) { reader->curnode = NULL; reader->mode = XML_TEXTREADER_MODE_EOF; if (reader->ctxt != NULL) { + xmlStopParser(reader->ctxt); if (reader->ctxt->myDoc != NULL) { if (reader->preserve == 0) xmlTextReaderFreeDoc(reader, reader->ctxt->myDoc); reader->ctxt->myDoc = NULL; } - if (reader->allocs & XML_TEXTREADER_CTXT) { - xmlFreeParserCtxt(reader->ctxt); - reader->allocs -= XML_TEXTREADER_CTXT; - } - } - if (reader->sax != NULL) { - xmlFree(reader->sax); - reader->sax = NULL; } if (reader->allocs & XML_TEXTREADER_INPUT) { ret = reader->input; + reader->input = NULL; reader->allocs -= XML_TEXTREADER_INPUT; } else { /* |