Re: [Bug?] log -p -W showing the whole file for a patch that adds to the end?
- From
René Scharfe <l.s.r@web.de>
- Date
- May 12, 2016, 22:12 UTC
- Message-ID
- <5734FFBC.5070505@web.de>
- In-Reply-To
- <xmqq4ma5msrd.fsf@gitster.mtv.corp.google.com>
Am 11.05.2016 um 00:51 schrieb Junio C Hamano:
Show 10 quoted lines
> The helper function get_func_line() however gets confused when a > hunk adds a new function at the very end, and returns -1 to signal > that it did not find a suitable "function header line", i.e. the > beginning of previous function. The caller then takes this signal > and shows from the very beginning of the file. We end up showing > the entire file, starting from the very beginning to the end of the > newly added lines. > > We can avoid this by using the original hunk boundary when the > helper gives up.
It's a more conservative fallback in this case, but it regresses e.g. if you have a long list of includes at the top of a C file -- it won't show the full list anymore with -W.
The problem is that we are trying to access lines in the preimage that are only actually in the postimage. Simply switching to useing the postimage unconditionally is not enough -- we'd have the same problem with the complementary case of lines at the end being removed.
I wonder if using the postimage as a fallback suffices. Need to look at this more closely.
René