Commit 9e7d8a9b authored by Gábor Szeder's avatar Gábor Szeder Committed by Junio C Hamano

blame: fix memory corruption scrambling revision name in error message

When attempting to blame a non-existing path, git should show an error
message like this:

  $ git blame e83c5163 -- nonexisting-file
  fatal: no such path nonexisting-file in e83c5163

Since the recent commit 835c49f7 (blame: rework methods that
determine 'final' commit, 2017-05-24) the revision name is either
missing or some scrambled characters are shown instead.  The reason is
that the revision name must be duplicated, because it is invalidated
when the pending objects array is cleared in the meantime, but this
commit dropped the duplication.

Restore the duplication of the revision name in the affected functions
(find_single_final() and find_single_initial()).
Signed-off-by: Gábor Szeder's avatarSZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
parent bd481de7
......@@ -1664,7 +1664,7 @@ static struct commit *find_single_final(struct rev_info *revs,
name = revs->pending.objects[i].name;
}
if (name_p)
*name_p = name;
*name_p = xstrdup_or_null(name);
return found;
}
......@@ -1736,7 +1736,7 @@ static struct commit *find_single_initial(struct rev_info *revs,
die("No commit to dig up from?");
if (name_p)
*name_p = name;
*name_p = xstrdup(name);
return found;
}
......@@ -1844,6 +1844,8 @@ void setup_scoreboard(struct blame_scoreboard *sb, const char *path, struct blam
if (orig)
*orig = o;
free((char *)final_commit_name);
}
......
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