From 7f81c00f3b1bd45c2954b18550b8e351651f72f3 Mon Sep 17 00:00:00 2001 From: Isabella Stephens Date: Fri, 15 Jun 2018 16:29:28 +1000 Subject: log: prevent error if line range ends past end of file If the -L option is used to specify a line range in git log, and the end of the range is past the end of the file, git will fail with a fatal error. This commit prevents such behaviour - instead we perform the log for existing lines within the specified range. This commit also fixes a corner case where -L ,-n:file would be treated as a log over the whole file. Now we treat this as -L 1,-n:file and blame the first line of the file instead. Signed-off-by: Isabella Stephens Signed-off-by: Junio C Hamano --- line-log.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'line-log.c') diff --git a/line-log.c b/line-log.c index cdc2257db5..8ad074e58d 100644 --- a/line-log.c +++ b/line-log.c @@ -599,11 +599,11 @@ parse_lines(struct commit *commit, const char *prefix, struct string_list *args) lines, anchor, &begin, &end, full_name)) die("malformed -L argument '%s'", range_part); - if (lines < end || ((lines || begin) && lines < begin)) + if ((!lines && (begin || end)) || lines < begin) die("file %s has only %lu lines", name_part, lines); if (begin < 1) begin = 1; - if (end < 1) + if (end < 1 || lines < end) end = lines; begin--; line_log_data_insert(&ranges, full_name, begin, end); -- cgit v1.2.3