зеркало из https://github.com/microsoft/git.git
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 blamee83c51633
-- nonexisting-file fatal: no such path nonexisting-file ine83c51633
Since the recent commit835c49f7d
(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: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
bd481de713
Коммит
9e7d8a9bfb
6
blame.c
6
blame.c
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче