summaryrefslogtreecommitdiff
path: root/src/pdf_bridge.c
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-28 12:39:43 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:14 -0300
commitc8a3ecc3bcb36f0259f4d8ad2e0cdfcdc3183c9f (patch)
tree281c5f96b398ea8c19cc65841088bc89075d1778 /src/pdf_bridge.c
parentc5c1c200ad66a16b73428de2c369fc15aacac8b4 (diff)
downloadpardes-c8a3ecc3bcb36f0259f4d8ad2e0cdfcdc3183c9f.tar.gz
pardes-c8a3ecc3bcb36f0259f4d8ad2e0cdfcdc3183c9f.zip
A regular expression search is bounded by a step budget patched into mvzr, not windows and a repeat cap
The windows returned wrong matches: a candidate reaching a window's edge was left to the next window, half a window on, which could answer a match starting mid-token rather than the leftmost, and addr then pointed data's next write at the wrong bytes. The repeat cap missed mvzr's own worst case, a chain of a?, and alternation under a repeat, each exponential inside one mvzr call the deadline could not interrupt; and it refused ordinary s/S patterns. build.zig now patches the fetched mvzr at build time with a step counter on its backtracking recursion (matchPattern), so a fresh fetch keeps it and a moved anchor stops the build; regexp.zig gives each compiled pattern a budget, about 300 ms here, and a search that spends it fails as taking too long. Windows, the cap and their special cases are gone, and matches are exact again. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'src/pdf_bridge.c')
0 files changed, 0 insertions, 0 deletions