Homestyx hydra
Diffusion hydra fcb75d0503c6

Fix an issue where prose diffing may fail after hitting the PCRE backtracking…

Description

Fix an issue where prose diffing may fail after hitting the PCRE backtracking limit

Summary:
Fixes T13554. For certain prose diff inputs and PCRE backtracking limits, this regular expression may back track too often and fail.

A characteristic input is "x x x x ...", i.e. many sequences where (.*?)\s*\z looks like it may be able to match but actually can not.

I think writing an expression which has all the behavior we'd like without this backtracking issue isn't trivial (at least, I don't think I know how to do it offhand); just use a strategy based on "trim()" insetad, which avoids any PCRE complexities here.

Test Plan: Locally, this passes the "x x x ..." test which the previous code failed. I'm not including that test because it won't reproduce across values of "pcre.backtrac_limit", PCRE versions, etc.

Maniphest Tasks: T13554

Differential Revision: https://secure.phabricator.com/D21422

Details

Provenance
epriestleyAuthored on Jul 23 2020, 10:35 AM
sirocylPushed on Oct 16 2024, 5:49 AM
Parents
R1:8f9ba4852861: Fix an issue with destruction of Revision and Diff objects with viewstates
Branches
Unknown
Tags
Unknown

Event Timeline