Handle patches with misformatted empty lines
authorHollis Blanchard <hollisb@us.ibm.com>
Thu, 01 Nov 2007 17:15:50 -0500
changeset 5483 ec2cc1dadbf7
parent 5482 e5eedd74e70f
child 5484 07bdb5e5d08c
Handle patches with misformatted empty lines Insert a space on empty lines which are missing a control character. Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com> --- I frequently receive emailed patches with empty lines represented as "\n\n", where Mercurial expects them to be "\n \n". patch(1) applies these patches without complaint, but qpush fails all hunks.
mercurial/diffhelpers.c
--- a/mercurial/diffhelpers.c	Thu Nov 01 12:17:59 2007 -0700
+++ b/mercurial/diffhelpers.c	Thu Nov 01 17:15:50 2007 -0500
@@ -83,6 +83,12 @@
 				_fix_newline(hunk, a, b);
 				continue;
 			}
+			if (c == '\n') {
+				/* Some patches may be missing the control char
+				 * on empty lines. Supply a leading space. */
+				Py_DECREF(x);
+				x = PyString_FromString(" \n");
+			}
 			PyList_Append(hunk, x);
 			if (c == '+') {
 				l = PyString_FromString(s + 1);