diff options
Diffstat (limited to 'source/a/patch/patch.99f2638763845d8173a0c9f9209ac2b4be947165.diff')
-rw-r--r-- | source/a/patch/patch.99f2638763845d8173a0c9f9209ac2b4be947165.diff | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/source/a/patch/patch.99f2638763845d8173a0c9f9209ac2b4be947165.diff b/source/a/patch/patch.99f2638763845d8173a0c9f9209ac2b4be947165.diff new file mode 100644 index 00000000..14c342a5 --- /dev/null +++ b/source/a/patch/patch.99f2638763845d8173a0c9f9209ac2b4be947165.diff @@ -0,0 +1,88 @@ +From 99f2638763845d8173a0c9f9209ac2b4be947165 Mon Sep 17 00:00:00 2001 +From: Andreas Gruenbacher <agruen@linbit.com> +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' <<EOF + three + EOF + +-cat > f <<EOF +-1 +-2 +-3 +-EOF ++seq 3 > f + + cat > concat2.diff <<EOF + diff --git a/f b/f +@@ -95,3 +91,38 @@ a + 3 + b + EOF ++ ++seq 3 > f ++ ++cat > concat3.diff <<EOF ++diff --git a/f b/f ++index 01e79c3..0d0b976 100644 ++--- a/f +++++ b/f ++@@ -1,3 +1,4 @@ ++ 1 ++ 2 ++ 3 +++b ++diff a/f b/f ++--- a/f +++++ b/f ++@@ -1,3 +1,4 @@ +++a ++ 1 ++ 2 ++ 3 ++EOF ++ ++check 'patch -p1 < concat3.diff || echo "Status: $?"' <<EOF ++patching file f ++patching file f ++EOF ++ ++check 'cat f' <<EOF ++a ++1 ++2 ++3 ++b ++EOF +-- +cgit v0.9.0.2 + |