| 3404 | } |
| 3405 | |
| 3406 | static enum XML_Error |
| 3407 | handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName) |
| 3408 | { |
| 3409 | if (unknownEncodingHandler) { |
| 3410 | XML_Encoding info; |
| 3411 | int i; |
| 3412 | for (i = 0; i < 256; i++) |
| 3413 | info.map[i] = -1; |
| 3414 | info.convert = NULL; |
| 3415 | info.data = NULL; |
| 3416 | info.release = NULL; |
| 3417 | if (unknownEncodingHandler(unknownEncodingHandlerData, encodingName, |
| 3418 | &info)) { |
| 3419 | ENCODING *enc; |
| 3420 | unknownEncodingMem = MALLOC(XmlSizeOfUnknownEncoding()); |
| 3421 | if (!unknownEncodingMem) { |
| 3422 | if (info.release) |
| 3423 | info.release(info.data); |
| 3424 | return XML_ERROR_NO_MEMORY; |
| 3425 | } |
| 3426 | enc = (ns |
| 3427 | ? XmlInitUnknownEncodingNS |
| 3428 | : XmlInitUnknownEncoding)(unknownEncodingMem, |
| 3429 | info.map, |
| 3430 | info.convert, |
| 3431 | info.data); |
| 3432 | if (enc) { |
| 3433 | unknownEncodingData = info.data; |
| 3434 | unknownEncodingRelease = info.release; |
| 3435 | encoding = enc; |
| 3436 | return XML_ERROR_NONE; |
| 3437 | } |
| 3438 | } |
| 3439 | if (info.release != NULL) |
| 3440 | info.release(info.data); |
| 3441 | } |
| 3442 | return XML_ERROR_UNKNOWN_ENCODING; |
| 3443 | } |
| 3444 | |
| 3445 | static enum XML_Error PTRCALL |
| 3446 | prologInitProcessor(XML_Parser parser, |
no test coverage detected