diff options
Diffstat (limited to '3rdparty/expat/tests/handlers.c')
-rw-r--r-- | 3rdparty/expat/tests/handlers.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/3rdparty/expat/tests/handlers.c b/3rdparty/expat/tests/handlers.c index 0211985fe95..ac459507580 100644 --- a/3rdparty/expat/tests/handlers.c +++ b/3rdparty/expat/tests/handlers.c @@ -1843,6 +1843,15 @@ element_decl_suspender(void *userData, const XML_Char *name, } void XMLCALL +suspend_after_element_declaration(void *userData, const XML_Char *name, + XML_Content *model) { + UNUSED_P(name); + XML_Parser parser = (XML_Parser)userData; + assert_true(XML_StopParser(parser, /*resumable*/ XML_TRUE) == XML_STATUS_OK); + XML_FreeContentModel(parser, model); +} + +void XMLCALL accumulate_pi_characters(void *userData, const XML_Char *target, const XML_Char *data) { CharData *storage = (CharData *)userData; @@ -1883,6 +1892,20 @@ accumulate_entity_decl(void *userData, const XML_Char *entityName, } void XMLCALL +accumulate_char_data_and_suspend(void *userData, const XML_Char *s, int len) { + ParserPlusStorage *const parserPlusStorage = (ParserPlusStorage *)userData; + + CharData_AppendXMLChars(parserPlusStorage->storage, s, len); + + for (int i = 0; i < len; i++) { + if (s[i] == 'Z') { + XML_StopParser(parserPlusStorage->parser, /*resumable=*/XML_TRUE); + break; + } + } +} + +void XMLCALL accumulate_start_element(void *userData, const XML_Char *name, const XML_Char **atts) { CharData *const storage = (CharData *)userData; |