| 3238 | } |
| 3239 | |
| 3240 | static enum XML_Error PTRCALL |
| 3241 | externalEntityInitProcessor3(XML_Parser parser, const char *start, |
| 3242 | const char *end, const char **endPtr) { |
| 3243 | int tok; |
| 3244 | const char *next = start; /* XmlContentTok doesn't always set the last arg */ |
| 3245 | parser->m_eventPtr = start; |
| 3246 | tok = XmlContentTok(parser->m_encoding, start, end, &next); |
| 3247 | /* Note: These bytes are accounted later in: |
| 3248 | - processXmlDecl |
| 3249 | - externalEntityContentProcessor |
| 3250 | */ |
| 3251 | parser->m_eventEndPtr = next; |
| 3252 | |
| 3253 | switch (tok) { |
| 3254 | case XML_TOK_XML_DECL: { |
| 3255 | enum XML_Error result; |
| 3256 | result = processXmlDecl(parser, 1, start, next); |
| 3257 | if (result != XML_ERROR_NONE) |
| 3258 | return result; |
| 3259 | switch (parser->m_parsingStatus.parsing) { |
| 3260 | case XML_SUSPENDED: |
| 3261 | *endPtr = next; |
| 3262 | return XML_ERROR_NONE; |
| 3263 | case XML_FINISHED: |
| 3264 | return XML_ERROR_ABORTED; |
| 3265 | case XML_PARSING: |
| 3266 | if (parser->m_reenter) { |
| 3267 | return XML_ERROR_UNEXPECTED_STATE; // LCOV_EXCL_LINE |
| 3268 | } |
| 3269 | /* Fall through */ |
| 3270 | default: |
| 3271 | start = next; |
| 3272 | } |
| 3273 | } break; |
| 3274 | case XML_TOK_PARTIAL: |
| 3275 | if (! parser->m_parsingStatus.finalBuffer) { |
| 3276 | *endPtr = start; |
| 3277 | return XML_ERROR_NONE; |
| 3278 | } |
| 3279 | return XML_ERROR_UNCLOSED_TOKEN; |
| 3280 | case XML_TOK_PARTIAL_CHAR: |
| 3281 | if (! parser->m_parsingStatus.finalBuffer) { |
| 3282 | *endPtr = start; |
| 3283 | return XML_ERROR_NONE; |
| 3284 | } |
| 3285 | return XML_ERROR_PARTIAL_CHAR; |
| 3286 | } |
| 3287 | parser->m_processor = externalEntityContentProcessor; |
| 3288 | parser->m_tagLevel = 1; |
| 3289 | return externalEntityContentProcessor(parser, start, end, endPtr); |
| 3290 | } |
| 3291 | |
| 3292 | static enum XML_Error PTRCALL |
| 3293 | externalEntityContentProcessor(XML_Parser parser, const char *start, |
no test coverage detected
searching dependent graphs…