* xmlFreeTextReader: * @reader: the xmlTextReaderPtr * * Deallocate all the resources associated to the reader */
| 2183 | * Deallocate all the resources associated to the reader |
| 2184 | */ |
| 2185 | void |
| 2186 | xmlFreeTextReader(xmlTextReaderPtr reader) { |
| 2187 | if (reader == NULL) |
| 2188 | return; |
| 2189 | #ifdef LIBXML_SCHEMAS_ENABLED |
| 2190 | if (reader->rngSchemas != NULL) { |
| 2191 | xmlRelaxNGFree(reader->rngSchemas); |
| 2192 | reader->rngSchemas = NULL; |
| 2193 | } |
| 2194 | if (reader->rngValidCtxt != NULL) { |
| 2195 | if (! reader->rngPreserveCtxt) |
| 2196 | xmlRelaxNGFreeValidCtxt(reader->rngValidCtxt); |
| 2197 | reader->rngValidCtxt = NULL; |
| 2198 | } |
| 2199 | if (reader->xsdPlug != NULL) { |
| 2200 | xmlSchemaSAXUnplug(reader->xsdPlug); |
| 2201 | reader->xsdPlug = NULL; |
| 2202 | } |
| 2203 | if (reader->xsdValidCtxt != NULL) { |
| 2204 | if (! reader->xsdPreserveCtxt) |
| 2205 | xmlSchemaFreeValidCtxt(reader->xsdValidCtxt); |
| 2206 | reader->xsdValidCtxt = NULL; |
| 2207 | } |
| 2208 | if (reader->xsdSchemas != NULL) { |
| 2209 | xmlSchemaFree(reader->xsdSchemas); |
| 2210 | reader->xsdSchemas = NULL; |
| 2211 | } |
| 2212 | #endif |
| 2213 | #ifdef LIBXML_XINCLUDE_ENABLED |
| 2214 | if (reader->xincctxt != NULL) |
| 2215 | xmlXIncludeFreeContext(reader->xincctxt); |
| 2216 | #endif |
| 2217 | #ifdef LIBXML_PATTERN_ENABLED |
| 2218 | if (reader->patternTab != NULL) { |
| 2219 | int i; |
| 2220 | for (i = 0;i < reader->patternNr;i++) { |
| 2221 | if (reader->patternTab[i] != NULL) |
| 2222 | xmlFreePattern(reader->patternTab[i]); |
| 2223 | } |
| 2224 | xmlFree(reader->patternTab); |
| 2225 | } |
| 2226 | #endif |
| 2227 | if (reader->mode != XML_TEXTREADER_MODE_CLOSED) |
| 2228 | xmlTextReaderClose(reader); |
| 2229 | if (reader->ctxt != NULL) { |
| 2230 | if (reader->dict == reader->ctxt->dict) |
| 2231 | reader->dict = NULL; |
| 2232 | if (reader->allocs & XML_TEXTREADER_CTXT) |
| 2233 | xmlFreeParserCtxt(reader->ctxt); |
| 2234 | } |
| 2235 | if (reader->sax != NULL) |
| 2236 | xmlFree(reader->sax); |
| 2237 | if (reader->buffer != NULL) |
| 2238 | xmlBufFree(reader->buffer); |
| 2239 | if (reader->entTab != NULL) |
| 2240 | xmlFree(reader->entTab); |
| 2241 | if (reader->dict != NULL) |
| 2242 | xmlDictFree(reader->dict); |