diff options
author | Junio C Hamano <gitster@pobox.com> | 2017-10-17 13:29:19 +0900 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-10-17 13:29:19 +0900 |
commit | 91ccfb85176fbe2ed416751ff7884cdaf61311cb (patch) | |
tree | 751cf5f7235e9a2eb10521a3224178500b01472a /diff.c | |
parent | d1114d87c73c78a936975bef5f15e2cde639336d (diff) | |
parent | fa5ba2c1dd0ce1bd060f423e7b1eb39d06fcd2cd (diff) | |
download | git-91ccfb85176fbe2ed416751ff7884cdaf61311cb.tar.gz |
Merge branch 'sb/diff-color-move'
A recently added "--color-moved" feature of "diff" fell into
infinite loop when ignoring whitespace changes, which has been
fixed.
* sb/diff-color-move:
diff: fix infinite loop with --color-moved --ignore-space-change
Diffstat (limited to 'diff.c')
-rw-r--r-- | diff.c | 28 |
1 files changed, 15 insertions, 13 deletions
@@ -712,20 +712,22 @@ static int next_byte(const char **cp, const char **endp, if (*cp > *endp) return -1; - if (DIFF_XDL_TST(diffopt, IGNORE_WHITESPACE_CHANGE)) { - while (*cp < *endp && isspace(**cp)) - (*cp)++; - /* - * After skipping a couple of whitespaces, we still have to - * account for one space. - */ - return (int)' '; - } + if (isspace(**cp)) { + if (DIFF_XDL_TST(diffopt, IGNORE_WHITESPACE_CHANGE)) { + while (*cp < *endp && isspace(**cp)) + (*cp)++; + /* + * After skipping a couple of whitespaces, + * we still have to account for one space. + */ + return (int)' '; + } - if (DIFF_XDL_TST(diffopt, IGNORE_WHITESPACE)) { - while (*cp < *endp && isspace(**cp)) - (*cp)++; - /* return the first non-ws character via the usual below */ + if (DIFF_XDL_TST(diffopt, IGNORE_WHITESPACE)) { + while (*cp < *endp && isspace(**cp)) + (*cp)++; + /* return the first non-ws character via the usual below */ + } } retval = (unsigned char)(**cp); |