summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBen Straub <bs@github.com>2013-04-15 12:00:04 -0700
committerBen Straub <bs@github.com>2013-04-15 12:00:04 -0700
commit299a224be16368dc36bef4dc3f5e711ce35300cd (patch)
tree5371b54270c4b84abd586c49d7eb06b80d3d4e7b /src
parent2ebc3c66c292539786b6ec1538f740c5e444fe16 (diff)
downloadlibgit2-299a224be16368dc36bef4dc3f5e711ce35300cd.tar.gz
Change git_revparse to output git_object pointers
This will probably prevent many lookup/free operations in calling code.
Diffstat (limited to 'src')
-rw-r--r--src/revparse.c21
-rw-r--r--src/revwalk.c8
2 files changed, 13 insertions, 16 deletions
diff --git a/src/revparse.c b/src/revparse.c
index 5f591406e..62be3128a 100644
--- a/src/revparse.c
+++ b/src/revparse.c
@@ -870,8 +870,8 @@ cleanup:
int git_revparse(
- git_oid *left,
- git_oid *right,
+ git_object **left,
+ git_object **right,
unsigned int *flags,
git_repository *repo,
const char *spec)
@@ -879,7 +879,6 @@ int git_revparse(
unsigned int lflags = 0;
const char *dotdot;
int error = 0;
- git_object *obj = NULL;
assert(left && repo && spec);
@@ -895,22 +894,18 @@ int git_revparse(
rstr++;
}
- if (!(error = git_revparse_single(&obj, repo, lstr))) {
- git_oid_cpy(left, git_object_id(obj));
- git_object_free(obj);
+ if ((error = git_revparse_single(left, repo, lstr)) < 0) {
+ return error;
}
- if (right && !(error = git_revparse_single(&obj, repo, rstr))) {
- git_oid_cpy(right, git_object_id(obj));
- git_object_free(obj);
+ if (right &&
+ (error = git_revparse_single(right, repo, rstr)) < 0) {
+ return error;
}
git__free((void*)lstr);
} else {
lflags = GIT_REVPARSE_SINGLE;
- if (!(error = git_revparse_single(&obj, repo, spec))) {
- git_oid_cpy(left, git_object_id(obj));
- git_object_free(obj);
- }
+ error = git_revparse_single(left, repo, spec);
}
if (flags)
diff --git a/src/revwalk.c b/src/revwalk.c
index b22fef07f..05e99c0b6 100644
--- a/src/revwalk.c
+++ b/src/revwalk.c
@@ -231,7 +231,7 @@ int git_revwalk_push_ref(git_revwalk *walk, const char *refname)
int git_revwalk_push_range(git_revwalk *walk, const char *range)
{
- git_oid left, right;
+ git_object *left, *right;
git_revparse_flag_t revparseflags;
int error = 0;
@@ -243,11 +243,13 @@ int git_revwalk_push_range(git_revwalk *walk, const char *range)
return GIT_EINVALIDSPEC;
}
- if ((error = push_commit(walk, &left, 1)))
+ if ((error = push_commit(walk, git_object_id(left), 1)))
goto out;
- error = push_commit(walk, &right, 0);
+ error = push_commit(walk, git_object_id(right), 0);
out:
+ git_object_free(left);
+ git_object_free(right);
return error;
}