summaryrefslogtreecommitdiffstats
path: root/xdiff
diff options
context:
space:
mode:
authorRené Scharfe <l.s.r@web.de>2016-06-09 23:54:48 +0200
committerJunio C Hamano <gitster@pobox.com>2016-06-09 15:27:26 -0700
commit6f8d9bccb2c3694c62d14225976689c1e8c50fa5 (patch)
tree9c3d0bdea3f28fadc16e136e5cada7e519912666 /xdiff
parent4aa2c4753d152aef810eaf3f3f4fa1df7035d9b0 (diff)
downloadgit-6f8d9bccb2c3694c62d14225976689c1e8c50fa5.tar.gz
git-6f8d9bccb2c3694c62d14225976689c1e8c50fa5.tar.xz
xdiff: fix merging of appended hunk with -W
When -W is given we search the lines between the end of the current context and the next change for a function line. If there is none then we merge those two hunks as they must be part of the same function. If the next change is an appended chunk we abort the search early in get_func_line(), however, because its line number is out of range. Fix that by searching from the end of the pre-image in that case instead. Reported-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'xdiff')
-rw-r--r--xdiff/xemit.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/xdiff/xemit.c b/xdiff/xemit.c
index bfa53d3dc..49aa16ff7 100644
--- a/xdiff/xemit.c
+++ b/xdiff/xemit.c
@@ -246,7 +246,8 @@ int xdl_emit_diff(xdfenv_t *xe, xdchange_t *xscr, xdemitcb_t *ecb,
* its new end.
*/
if (xche->next) {
- long l = xche->next->i1;
+ long l = XDL_MIN(xche->next->i1,
+ xe->xdf1.nrec - 1);
if (l <= e1 ||
get_func_line(xe, xecfg, NULL, l, e1) < 0) {
xche = xche->next;