summaryrefslogtreecommitdiff
path: root/src/revparse.c
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/revparse.c
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/revparse.c')
-rw-r--r--src/revparse.c21
1 files changed, 8 insertions, 13 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)