summaryrefslogtreecommitdiff
path: root/commit.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-01-16 06:15:37 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-01-16 06:15:37 (GMT)
commit181dc776956b4d265891ac70514ed214e4b7564a (patch)
tree9cec4e555400d7df29d9c110f9ac12abed8ae110 /commit.c
parent7cb038a692ec0bdc0f442380678e8e87e26d4e68 (diff)
downloadgit-181dc776956b4d265891ac70514ed214e4b7564a.zip
git-181dc776956b4d265891ac70514ed214e4b7564a.tar.gz
git-181dc776956b4d265891ac70514ed214e4b7564a.tar.bz2
describe: omit clearing marks on the last one.
When describing more than one, we need to clear the commit marks before handling the next one, but most of the time we are running it for only one commit, and in such a case this clearing phase is totally unnecessary. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'commit.c')
-rw-r--r--commit.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/commit.c b/commit.c
index 56efc69..b8bf35e 100644
--- a/commit.c
+++ b/commit.c
@@ -359,8 +359,10 @@ void clear_commit_marks(struct commit *commit, unsigned int mark)
parents = commit->parents;
commit->object.flags &= ~mark;
while (parents) {
- if (parents->item && parents->item->object.parsed)
- clear_commit_marks(parents->item, mark);
+ struct commit *parent = parents->item;
+ if (parent && parent->object.parsed &&
+ (parent->object.flags & mark))
+ clear_commit_marks(parent, mark);
parents = parents->next;
}
}