From: Olivia Trewin Date: Fri, 12 Jun 2026 14:05:24 +0000 (-0700) Subject: Fix #399 by correcting assert in buildFragmentPrograms (#400) X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=HEAD;p=thirdparty%2Fvectorscan.git Fix #399 by correcting assert in buildFragmentPrograms (#400) Co-authored-by: Olivia Trewin --- diff --git a/src/rose/rose_build_bytecode.cpp b/src/rose/rose_build_bytecode.cpp index 217dadb7..72ee9b3b 100644 --- a/src/rose/rose_build_bytecode.cpp +++ b/src/rose/rose_build_bytecode.cpp @@ -2994,9 +2994,8 @@ void buildFragmentPrograms(const RoseBuildImpl &build, if (pfrag.included_delay_frag_id != INVALID_FRAG_ID && !rebuild_prog.empty()) { const auto &cfrag = fragments[pfrag.included_delay_frag_id]; - /** assert(pfrag.s.length() >= cfrag.s.length() && **/ - assert(pfrag.s.length() == cfrag.s.length() && - !pfrag.s.any_nocase() != !cfrag.s.any_nocase()); + // cppcheck-suppress comparisonOfTwoFuncsReturningBoolError + assert(pfrag.s.length() >= cfrag.s.length() && !pfrag.s.any_nocase() >= !cfrag.s.any_nocase()); u32 child_offset = cfrag.delay_program_offset; DEBUG_PRINTF("child %u offset %u\n", cfrag.fragment_id, child_offset); diff --git a/unit/hyperscan/regressions.cpp b/unit/hyperscan/regressions.cpp index 5f1b2b0a..593f2099 100644 --- a/unit/hyperscan/regressions.cpp +++ b/unit/hyperscan/regressions.cpp @@ -498,4 +498,11 @@ TEST(utf8, charclass_issue_326) { err = hs_free_scratch(scratch); ASSERT_EQ(HS_SUCCESS, err); hs_free_database(db); -} \ No newline at end of file +} + +TEST(bug339, delayed_fragment_assert) { + hs_database_t *db = buildDB(R"((?:1\d|3[01])(?:0[1-9]|1[01])\d)", 0, 0, HS_MODE_STREAM); + ASSERT_NE(nullptr, db); + + hs_free_database(db); +}