From 7f54667c59c5a884beba5dce17003715d7cbaffa Mon Sep 17 00:00:00 2001 From: Snild Dolkow Date: Mon, 18 Sep 2023 20:32:55 +0200 Subject: [PATCH] tests: Run both with and without partial token heuristic If we always run with the heuristic enabled, it may hide some bugs by grouping up input into bigger parse attempts. CI-fighting-assistance-by: Sebastian Pipping --- lib/internal.h | 2 ++ lib/xmlparse.c | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/internal.h b/lib/internal.h index 444eba0f..dda42d88 100644 --- a/lib/internal.h +++ b/lib/internal.h @@ -158,6 +158,8 @@ unsigned long long testingAccountingGetCountBytesIndirect(XML_Parser parser); const char *unsignedCharToPrintable(unsigned char c); #endif +extern XML_Bool g_reparseDeferralEnabledDefault; // written ONLY in runtests.c + #ifdef __cplusplus } #endif diff --git a/lib/xmlparse.c b/lib/xmlparse.c index 32df1eb9..e30e76aa 100644 --- a/lib/xmlparse.c +++ b/lib/xmlparse.c @@ -599,6 +599,8 @@ static unsigned long getDebugLevel(const char *variableName, ? 0 \ : ((*((pool)->ptr)++ = c), 1)) +XML_Bool g_reparseDeferralEnabledDefault = XML_TRUE; // write ONLY in runtests.c + struct XML_ParserStruct { /* The first member must be m_userData so that the XML_GetUserData macro works. */ @@ -951,7 +953,8 @@ callProcessor(XML_Parser parser, const char *start, const char *end, const char **endPtr) { const size_t have_now = EXPAT_SAFE_PTR_DIFF(end, start); - if (! parser->m_parsingStatus.finalBuffer) { + if (g_reparseDeferralEnabledDefault + && ! parser->m_parsingStatus.finalBuffer) { // Heuristic: don't try to parse a partial token again until the amount of // available data has increased significantly. const size_t had_before = parser->m_partialTokenBytesBefore; -- 2.33.0