зеркало из https://github.com/microsoft/git.git
get_revision_1(): replace do-while with an early return
The get_revision_1() function tries to avoid entering its main loop at all when there are no commits to look at. But it's perfectly safe to call pop_commit() on an empty list (in which case it will return NULL). Switching to an early return from the loop lets us skip repeating the loop condition before we enter the do-while. That will get more important when we start pulling reflog-walk commits from a source besides the revs->commits queue, as that condition will get much more complicated. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
f35650dff6
Коммит
7c2f08aa7a
11
revision.c
11
revision.c
|
@ -3111,12 +3111,12 @@ static void track_linear(struct rev_info *revs, struct commit *commit)
|
|||
|
||||
static struct commit *get_revision_1(struct rev_info *revs)
|
||||
{
|
||||
if (!revs->commits)
|
||||
return NULL;
|
||||
|
||||
do {
|
||||
while (1) {
|
||||
struct commit *commit = pop_commit(&revs->commits);
|
||||
|
||||
if (!commit)
|
||||
return NULL;
|
||||
|
||||
if (revs->reflog_info) {
|
||||
save_parents(revs, commit);
|
||||
fake_reflog_parent(revs->reflog_info, commit);
|
||||
|
@ -3150,8 +3150,7 @@ static struct commit *get_revision_1(struct rev_info *revs)
|
|||
track_linear(revs, commit);
|
||||
return commit;
|
||||
}
|
||||
} while (revs->commits);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Загрузка…
Ссылка в новой задаче