summaryrefslogtreecommitdiffstats
path: root/source/a/patch/patch.99f2638763845d8173a0c9f9209ac2b4be947165.diff
diff options
context:
space:
mode:
Diffstat (limited to 'source/a/patch/patch.99f2638763845d8173a0c9f9209ac2b4be947165.diff')
-rw-r--r--source/a/patch/patch.99f2638763845d8173a0c9f9209ac2b4be947165.diff88
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 000000000..14c342a51
--- /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
+