X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=commit.c;h=4b39c19123c7fa8584a67d5fd91e11f89e5816e4;hb=b1d645b58ac6c96ffdc8d9a01f0b44a10deb43f9;hp=35af4988f0ff83c6a3379ea9f6de4e4e1568c39f;hpb=92b7aacbbc654de4cfae6806bc92cf81ec1823aa;p=git.git diff --git a/commit.c b/commit.c index 35af4988f..4b39c1912 100644 --- a/commit.c +++ b/commit.c @@ -422,7 +422,8 @@ struct commit *pop_most_recent_commit(struct commit_list **list, return ret; } -void clear_commit_marks(struct commit *commit, unsigned int mark) +static void clear_commit_marks_1(struct commit_list **plist, + struct commit *commit, unsigned int mark) { while (commit) { struct commit_list *parents; @@ -437,12 +438,20 @@ void clear_commit_marks(struct commit *commit, unsigned int mark) return; while ((parents = parents->next)) - clear_commit_marks(parents->item, mark); + commit_list_insert(parents->item, plist); commit = commit->parents->item; } } +void clear_commit_marks(struct commit *commit, unsigned int mark) +{ + struct commit_list *list = NULL; + commit_list_insert(commit, &list); + while (list) + clear_commit_marks_1(&list, pop_commit(&list), mark); +} + void clear_commit_marks_for_object_array(struct object_array *a, unsigned mark) { struct object *object;