diff options
Diffstat (limited to 'src/commit.c')
-rw-r--r-- | src/commit.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/commit.c b/src/commit.c index 2f5a5b51e..255debe82 100644 --- a/src/commit.c +++ b/src/commit.c @@ -455,19 +455,18 @@ int git_commit_nth_gen_ancestor( assert(ancestor && commit); - current = (git_commit *)commit; + if (git_object_dup((git_object **) ¤t, (git_object *) commit) < 0) + return -1; - if (n == 0) - return git_commit_lookup( - ancestor, - commit->object.repo, - git_object_id((const git_object *)commit)); + if (n == 0) { + *ancestor = current; + return 0; + } while (n--) { - error = git_commit_parent(&parent, (git_commit *)current, 0); + error = git_commit_parent(&parent, current, 0); - if (current != commit) - git_commit_free(current); + git_commit_free(current); if (error < 0) return error; |