• Tom Lane's avatar
    Further tweak memory management for regex DFAs. · 6c20bdb2
    Tom Lane authored
    Coverity is still unhappy after commit 190c7988, and after looking
    closer I think it might be onto something.  The callers of newdfa()
    typically drop out if v->err has been set nonzero, which newdfa()
    is faithfully doing if it fails.  However, what if v->err was already
    nonzero before we entered newdfa()?  Then newdfa() could succeed and
    the caller would promptly leak its result.
    
    I don't think this scenario can actually happen, but the predicate
    "v->err is always zero when newdfa() is called" seems difficult to be
    entirely sure of; there's a good deal of code that potentially could
    get that wrong.
    
    It seems better to adjust the callers to directly check for a null
    result instead of relying on ISERR() tests.  This is slightly cheaper
    than the previous coding anyway.
    
    Lacking evidence that there's any real bug, no back-patch.
    6c20bdb2
regexec.c 36.9 KB