• Jeff King's avatar
    diff_grep: use textconv buffers for add/deleted files · b1c2f57d
    Jeff King authored
    If you use "-G" to grep a diff, we will apply a configured
    textconv filter to the data before generating the diff.
    However, if the diff is an addition or deletion, we do not
    bother running the diff at all, and just look for the token
    in the added (or removed) content. This works because we
    know that the diff must contain every line of content.
    
    However, while we used the textconv-derived buffers in the
    regular diff, we accidentally passed the original unmodified
    buffers to regexec when checking the added or removed
    content. This could lead to an incorrect answer.
    
    Worse, in some cases we might have a textconv buffer but no
    original buffer (e.g., if we pulled the textconv data from
    cache, or if we reused a working tree file when generating
    it). In that case, we could actually feed NULL to regexec
    and segfault.
    Reported-by: Peter Oberndorfer's avatarPeter Oberndorfer <kumbayo84@arcor.de>
    Signed-off-by: default avatarJeff King <peff@peff.net>
    b1c2f57d
diffcore-pickaxe.c 6.12 KB