Skip to content

Commit 1126142

Browse files
committed
Fix issue ymattw#3 Broken at strange hunk head in a valid git patch
1 parent f9c4553 commit 1126142

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Makefile for testing
22

3-
TESTS = git svn crlf
3+
TESTS = git svn crlf strange
44

55
.PHONY: dogfood test $(TESTS)
66

src/cdiff.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class Hunk(object):
5151
def __init__(self, hunk_header, old_addr, new_addr):
5252
self._hunk_header = hunk_header
5353
self._old_addr = old_addr # tuple (start, offset)
54-
self._new_addr = new_addr # tuple group (start, offset)
54+
self._new_addr = new_addr # tuple (start, offset)
5555
self._hunk_list = [] # list of tuple (attr, line)
5656

5757
def get_header(self):
@@ -396,7 +396,11 @@ def _parse_udiff(self, stream):
396396
a = hunk_header.split()[1].split(',') # -3 7
397397
old_addr = (int(a[0][1:]), int(a[1]))
398398
b = hunk_header.split()[2].split(',') # +3 6
399-
new_addr = (int(b[0][1:]), int(b[1]))
399+
if len(b) > 1:
400+
new_addr = (int(b[0][1:]), int(b[1]))
401+
else:
402+
# @@ -0,0 +1 @@
403+
new_addr = (int(b[0][1:]), 0)
400404
hunk = Hunk(hunk_header, old_addr, new_addr)
401405

402406
elif Udiff.is_old(stream[0]) or Udiff.is_new(stream[0]) or \

tests/strange.diff

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
commit 57263369bd810ba3a2c2dfd32a905f1e7d59cc6d
2+
Author: Matthew Wang <[email protected]>
3+
Date: Sun Jan 6 21:56:54 2013 +0800
4+
5+
simplify with seperate node.py
6+
7+
diff --git a/.gitignore b/.gitignore
8+
new file mode 100644
9+
index 0000000..0d20b64
10+
--- /dev/null
11+
+++ b/.gitignore
12+
@@ -0,0 +1 @@
13+
+*.pyc

0 commit comments

Comments
 (0)