xdiff: handle appended chunks better with -W
authorRené Scharfe <l.s.r@web.de>
Sat, 28 May 2016 15:00:28 +0000 (17:00 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 31 May 2016 20:08:56 +0000 (13:08 -0700)
commit6d5badb2389d5d1d0752a230cd7ee74bb4043893
tree7f4f433c12884b9840688c2cc4e855fd2236df92
parentff2981f724c617d377229666e6deae257de5e239
xdiff: handle appended chunks better with -W

If lines are added at the end of a file, diff -W shows the whole file.
That's because get_func_line() only considers the pre-image and gives up
if it sees a record index beyond its end.

Consider the post-image as well to see if the added lines already make
up a full function.  If it doesn't then search for the previous function
line by starting from the bottom of the pre-image, thereby avoiding to
confuse get_func_line().

Reuse the existing label called "again", as it's exactly where we need
to jump to when we're done handling the pre-context, but rename it to
"post_context_calculation" in order to document its new purpose better.

Reported-by: Junio C Hamano <gitster@pobox.com>
Initial-patch-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>
t/t4051-diff-function-context.sh
xdiff/xemit.c