summaryrefslogtreecommitdiff
path: root/xmlreader.c
diff options
context:
space:
mode:
authorMike Hommey <mh@glandium.org>2004-04-19 05:38:48 +0000
committerMike Hommey <mh@glandium.org>2004-04-19 05:38:48 +0000
commit81bcf076ea11e114a60e429338a15748066de163 (patch)
tree276010ab5d17f27a96c05f77004aa84a1763af7b /xmlreader.c
parentd09ab089457ae3c20cc98f9afa03379c6ebf9598 (diff)
downloadlibxml2-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.c23
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 {
/*