diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/revparse.c | 32 | ||||
-rw-r--r-- | src/revwalk.c | 19 |
2 files changed, 24 insertions, 27 deletions
diff --git a/src/revparse.c b/src/revparse.c index d2c14ccbb..a4fedd27c 100644 --- a/src/revparse.c +++ b/src/revparse.c @@ -870,47 +870,43 @@ cleanup: int git_revparse( - git_object **left, - git_object **right, - unsigned int *flags, - git_repository *repo, - const char *spec) + git_revision *revision, + git_repository *repo, + const char *spec) { - unsigned int lflags = 0; const char *dotdot; int error = 0; - assert(left && repo && spec); + assert(revision && repo && spec); + + memset(revision, 0x0, sizeof(*revision)); if ((dotdot = strstr(spec, "..")) != NULL) { char *lstr; const char *rstr; - lflags = GIT_REVPARSE_RANGE; + revision->flags = GIT_REVPARSE_RANGE; - lstr = git__substrdup(spec, dotdot-spec); + lstr = git__substrdup(spec, dotdot - spec); rstr = dotdot + 2; if (dotdot[2] == '.') { - lflags |= GIT_REVPARSE_MERGE_BASE; + revision->flags |= GIT_REVPARSE_MERGE_BASE; rstr++; } - if ((error = git_revparse_single(left, repo, lstr)) < 0) { + if ((error = git_revparse_single(&revision->from, repo, lstr)) < 0) { return error; } - if (right && - (error = git_revparse_single(right, repo, rstr)) < 0) { + + if ((error = git_revparse_single(&revision->to, repo, rstr)) < 0) { return error; } git__free((void*)lstr); } else { - lflags = GIT_REVPARSE_SINGLE; - error = git_revparse_single(left, repo, spec); + revision->flags = GIT_REVPARSE_SINGLE; + error = git_revparse_single(&revision->from, repo, spec); } - if (flags) - *flags = lflags; - return error; } diff --git a/src/revwalk.c b/src/revwalk.c index 05e99c0b6..9e32198fc 100644 --- a/src/revwalk.c +++ b/src/revwalk.c @@ -231,25 +231,26 @@ int git_revwalk_push_ref(git_revwalk *walk, const char *refname) int git_revwalk_push_range(git_revwalk *walk, const char *range) { - git_object *left, *right; - git_revparse_flag_t revparseflags; + git_revision revision; int error = 0; - if ((error = git_revparse(&left, &right, &revparseflags, walk->repo, range))) + if ((error = git_revparse(&revision, walk->repo, range))) return error; - if (revparseflags & GIT_REVPARSE_MERGE_BASE) { + + if (revision.flags & GIT_REVPARSE_MERGE_BASE) { /* TODO: support "<commit>...<commit>" */ giterr_set(GITERR_INVALID, "Symmetric differences not implemented in revwalk"); return GIT_EINVALIDSPEC; } - if ((error = push_commit(walk, git_object_id(left), 1))) + if ((error = push_commit(walk, git_object_id(revision.from), 1))) goto out; - error = push_commit(walk, git_object_id(right), 0); - out: - git_object_free(left); - git_object_free(right); + error = push_commit(walk, git_object_id(revision.to), 0); + +out: + git_object_free(revision.from); + git_object_free(revision.to); return error; } |