diff --git a/expat/tests/basic_tests.c b/expat/tests/basic_tests.c index 634288ad..8b47e5fe 100644 --- a/expat/tests/basic_tests.c +++ b/expat/tests/basic_tests.c @@ -3474,10 +3474,10 @@ END_TEST /* Test aborting the parse in an epilog works */ START_TEST(test_abort_epilog) { const char *text = "\n\r\n"; - XML_Char match[] = XCS("\r"); + XML_Char trigger_char = XCS('\r'); XML_SetDefaultHandler(g_parser, selective_aborting_default_handler); - XML_SetUserData(g_parser, match); + XML_SetUserData(g_parser, &trigger_char); g_resumable = XML_FALSE; if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) != XML_STATUS_ERROR) @@ -3490,10 +3490,10 @@ END_TEST /* Test a different code path for abort in the epilog */ START_TEST(test_abort_epilog_2) { const char *text = "\n"; - XML_Char match[] = XCS("\n"); + XML_Char trigger_char = XCS('\n'); XML_SetDefaultHandler(g_parser, selective_aborting_default_handler); - XML_SetUserData(g_parser, match); + XML_SetUserData(g_parser, &trigger_char); g_resumable = XML_FALSE; expect_failure(text, XML_ERROR_ABORTED, "Abort not triggered"); } @@ -3502,10 +3502,10 @@ END_TEST /* Test suspension from the epilog */ START_TEST(test_suspend_epilog) { const char *text = "\n"; - XML_Char match[] = XCS("\n"); + XML_Char trigger_char = XCS('\n'); XML_SetDefaultHandler(g_parser, selective_aborting_default_handler); - XML_SetUserData(g_parser, match); + XML_SetUserData(g_parser, &trigger_char); g_resumable = XML_TRUE; if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE) != XML_STATUS_SUSPENDED) diff --git a/expat/tests/handlers.c b/expat/tests/handlers.c index 847933b8..c347c3a2 100644 --- a/expat/tests/handlers.c +++ b/expat/tests/handlers.c @@ -1793,10 +1793,17 @@ data_check_comment_handler(void *userData, const XML_Char *data) { void XMLCALL selective_aborting_default_handler(void *userData, const XML_Char *s, int len) { - const XML_Char *match = (const XML_Char *)userData; + const XML_Char trigger_char = *(const XML_Char *)userData; - if (match == NULL - || (xcstrlen(match) == (unsigned)len && ! xcstrncmp(match, s, len))) { + int found = 0; + for (int i = 0; i < len; ++i) { + if (s[i] == trigger_char) { + found = 1; + break; + } + } + + if (found) { XML_StopParser(g_parser, g_resumable); XML_SetDefaultHandler(g_parser, NULL); }