| 4235 | #endif /* XML_DTD */ |
| 4236 | |
| 4237 | static enum XML_Error |
| 4238 | initializeEncoding(XML_Parser parser) { |
| 4239 | const char *s; |
| 4240 | #ifdef XML_UNICODE |
| 4241 | char encodingBuf[128]; |
| 4242 | /* See comments about `protocolEncodingName` in parserInit() */ |
| 4243 | if (! parser->m_protocolEncodingName) |
| 4244 | s = NULL; |
| 4245 | else { |
| 4246 | int i; |
| 4247 | for (i = 0; parser->m_protocolEncodingName[i]; i++) { |
| 4248 | if (i == sizeof(encodingBuf) - 1 |
| 4249 | || (parser->m_protocolEncodingName[i] & ~0x7f) != 0) { |
| 4250 | encodingBuf[0] = '\0'; |
| 4251 | break; |
| 4252 | } |
| 4253 | encodingBuf[i] = (char)parser->m_protocolEncodingName[i]; |
| 4254 | } |
| 4255 | encodingBuf[i] = '\0'; |
| 4256 | s = encodingBuf; |
| 4257 | } |
| 4258 | #else |
| 4259 | s = parser->m_protocolEncodingName; |
| 4260 | #endif |
| 4261 | if ((parser->m_ns ? XmlInitEncodingNS : XmlInitEncoding)( |
| 4262 | &parser->m_initEncoding, &parser->m_encoding, s)) |
| 4263 | return XML_ERROR_NONE; |
| 4264 | return handleUnknownEncoding(parser, parser->m_protocolEncodingName); |
| 4265 | } |
| 4266 | |
| 4267 | static enum XML_Error |
| 4268 | processXmlDecl(XML_Parser parser, int isGeneralTextEntity, const char *s, |
no test coverage detected