From 99f2638763845d8173a0c9f9209ac2b4be947165 Mon Sep 17 00:00:00 2001 From: Andreas Gruenbacher Date: Tue, 18 Sep 2012 10:51:17 +0000 Subject: Fix file truncation when switching from git diff to non-git diff * src/patch.c (main): Output queued output files only when switching from a git diff to a non-git diff. This can modify the input file, so make sure to stat() it again. * tests/concat-git-diff: Add test case growing a file with a git diff and then with a non-git diff; without this fix; the result would be truncated. --- diff --git a/src/patch.c b/src/patch.c index 0bce8fb..0b0fdd4 100644 --- a/src/patch.c +++ b/src/patch.c @@ -196,8 +196,12 @@ main (int argc, char **argv) if (have_git_diff != pch_git_diff ()) { + if (have_git_diff) + { + output_files (NULL); + inerrno = -1; + } have_git_diff = ! have_git_diff; - output_files (NULL); } if (TMPREJNAME_needs_removal) diff --git a/tests/concat-git-diff b/tests/concat-git-diff index 927eb5a..c78da53 100644 --- a/tests/concat-git-diff +++ b/tests/concat-git-diff @@ -56,11 +56,7 @@ check 'cat f' < f < f cat > concat2.diff < f + +cat > concat3.diff <