mergetools/xxdiff: prevent segfaults from stopping difftool
commit571f4348dd845fd4eccc6b19d93a7b422ed1a466
authorDavid Aguilar <davvid@gmail.com>
Wed, 13 Oct 2021 02:45:39 +0000 (12 19:45 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 13 Oct 2021 18:04:04 +0000 (13 11:04 -0700)
tree38f440eb32d19ff4e9f80f83d29a7aee96d8ebcc
parentaf6d1d602a8f64164b266364339c4e936d5bbc33
mergetools/xxdiff: prevent segfaults from stopping difftool

Users often use "git difftool HEAD^" to review their work, and have
"mergetool.prompt" set to false so that difftool does not prompt them
before diffing each file.

This is very convenient because users can see all their diffs by
reviewing the xxdiff windows one at a time.

A problem occurs when xxdiff encounters some binary files.
It can segfault and return exit code 128, which is special-cased
by git-difftool-helper as being an extraordinary situation that
aborts the process.

Suppress the exit code from xxdiff in its diff_cmd() implementation
when we see exit code 128 so that the GIT_EXTERNAL_DIFF loop continues
on uninterrupted to the next file rather than aborting when it
encounters the first binary file.

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
mergetools/xxdiff