From 4a966d3fa21710660cedf20d44d7a8e8809dc56d Mon Sep 17 00:00:00 2001 From: Daniel Jasper Date: Wed, 2 Oct 2013 13:59:03 +0000 Subject: [PATCH] clang-format: Fix clang-format-diff.py according to diff specification. Patch by Alp Toker. Many thanks! Original descriptions: clang-format-diff incorrectly modifies unchanged lines due to an error in diff parsing. The unified diff format has a default line change count of 1, and 0 may be specified to indicate that no lines have been added. This patch updates the parser to accurately reflect the diff specification. This also has the benefit of stabilising the operation so it will produce the same output when run multiple times on the same changeset, which was previously not the case. No tests added because this script is not currently tested (though we should look into that!) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191820 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/clang-format/clang-format-diff.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tools/clang-format/clang-format-diff.py b/tools/clang-format/clang-format-diff.py index 7c141785a3..90723d217b 100755 --- a/tools/clang-format/clang-format-diff.py +++ b/tools/clang-format/clang-format-diff.py @@ -60,9 +60,12 @@ def main(): match = re.search('^@@.*\+(\d+)(,(\d+))?', line) if match: start_line = int(match.group(1)) - end_line = start_line + line_count = 1 if match.group(3): - end_line = start_line + int(match.group(3)) + line_count = int(match.group(3)) + if line_count == 0: + continue + end_line = start_line + line_count - 1; lines_by_file.setdefault(filename, []).extend( ['-lines', str(start_line) + ':' + str(end_line)]) -- 2.50.1