| 4357 | } |
| 4358 | |
| 4359 | static enum XML_Error |
| 4360 | handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName) { |
| 4361 | if (parser->m_unknownEncodingHandler) { |
| 4362 | XML_Encoding info; |
| 4363 | int i; |
| 4364 | for (i = 0; i < 256; i++) |
| 4365 | info.map[i] = -1; |
| 4366 | info.convert = NULL; |
| 4367 | info.data = NULL; |
| 4368 | info.release = NULL; |
| 4369 | if (parser->m_unknownEncodingHandler(parser->m_unknownEncodingHandlerData, |
| 4370 | encodingName, &info)) { |
| 4371 | ENCODING *enc; |
| 4372 | parser->m_unknownEncodingMem = MALLOC(parser, XmlSizeOfUnknownEncoding()); |
| 4373 | if (! parser->m_unknownEncodingMem) { |
| 4374 | if (info.release) |
| 4375 | info.release(info.data); |
| 4376 | return XML_ERROR_NO_MEMORY; |
| 4377 | } |
| 4378 | enc = (parser->m_ns ? XmlInitUnknownEncodingNS : XmlInitUnknownEncoding)( |
| 4379 | parser->m_unknownEncodingMem, info.map, info.convert, info.data); |
| 4380 | if (enc) { |
| 4381 | parser->m_unknownEncodingData = info.data; |
| 4382 | parser->m_unknownEncodingRelease = info.release; |
| 4383 | parser->m_encoding = enc; |
| 4384 | return XML_ERROR_NONE; |
| 4385 | } |
| 4386 | } |
| 4387 | if (info.release != NULL) |
| 4388 | info.release(info.data); |
| 4389 | } |
| 4390 | return XML_ERROR_UNKNOWN_ENCODING; |
| 4391 | } |
| 4392 | |
| 4393 | static enum XML_Error PTRCALL |
| 4394 | prologInitProcessor(XML_Parser parser, const char *s, const char *end, |
no test coverage detected