Commit 3bf65f9e authored by Eric Sunshine's avatar Eric Sunshine Committed by Junio C Hamano

line-range: fix "blame -L X,-N" regression

"blame -L X,-N" is documented as blaming "N lines ending at X".  In
practice, the behavior is achieved by swapping the two range endpoints
if the second is less than the first.  25ed3412 (Refactor parse_loc;
2013-03-28) broke this interpretation by removing the swapping code from
blame.c and failing to add it to line-range.c along with other code
relocated from blame.c. Thus, such a range is effectively treated as
empty.  Fix this regression.
Signed-off-by: Eric Sunshine's avatarEric Sunshine <>
Signed-off-by: default avatarJunio C Hamano <>
parent ed73fe56
......@@ -211,6 +211,8 @@ int parse_range_arg(const char *arg, nth_line_fn_t nth_line_cb,
void *cb_data, long lines, long *begin, long *end,
const char *path)
*begin = *end = 0;
if (*arg == ':') {
arg = parse_range_funcname(arg, nth_line_cb, cb_data, lines, begin, end, path);
if (!arg || *arg)
......@@ -226,6 +228,11 @@ int parse_range_arg(const char *arg, nth_line_fn_t nth_line_cb,
if (*arg)
return -1;
if (*begin && *end && *end < *begin) {
long tmp;
tmp = *end; *end = *begin; *begin = tmp;
return 0;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment