• Tom Lane's avatar
    Change regexp engine's ccondissect/crevdissect routines to perform DFA · ee3a81f0
    Tom Lane authored
    matching before recursing instead of after.  The DFA match eliminates
    unworkable midpoint choices a lot faster than the recursive check, in most
    cases, so doing it first can speed things up; particularly in pathological
    cases such as recently exhibited by Michael Glaesemann.
    
    In addition, apply some cosmetic changes that were applied upstream (in the
    Tcl project) at the same time, in order to sync with upstream version 1.15
    of regexec.c.
    
    Upstream apparently intends to backpatch this, so I will too.  The
    pathological behavior could be unpleasant if encountered in the field,
    which seems to justify any risk of introducing new bugs.
    
    Tom Lane, reviewed by Donal K. Fellows of Tcl project
    ee3a81f0
regexec.c 27.1 KB