Commit eaf18ac3 by Vicent Martí

Merge pull request #777 from benstraub/revparse-fixup

Revparse fixup
parents 1d94a7d0 a15e7f86
...@@ -323,10 +323,10 @@ static git_object* dereference_object(git_object *obj) ...@@ -323,10 +323,10 @@ static git_object* dereference_object(git_object *obj)
break; break;
case GIT_OBJ_TAG: case GIT_OBJ_TAG:
{ {
git_object *newobj = NULL; git_object *newobj = NULL;
if (0 == git_tag_target(&newobj, (git_tag*)obj)) { if (0 == git_tag_target(&newobj, (git_tag*)obj)) {
return newobj; return newobj;
} }
} }
break; break;
...@@ -506,8 +506,8 @@ static int handle_linear_syntax(git_object **out, git_object *obj, const char *m ...@@ -506,8 +506,8 @@ static int handle_linear_syntax(git_object **out, git_object *obj, const char *m
/* "~" is the same as "~1" */ /* "~" is the same as "~1" */
if (*movement == '\0') { if (*movement == '\0') {
n = 1; n = 1;
} else { } else if (git__strtol32(&n, movement, NULL, 0) < 0) {
git__strtol32(&n, movement, NULL, 0); return GIT_ERROR;
} }
commit1 = (git_commit*)obj; commit1 = (git_commit*)obj;
...@@ -581,7 +581,7 @@ static int handle_colon_syntax(git_object **out, ...@@ -581,7 +581,7 @@ static int handle_colon_syntax(git_object **out,
git_tree_free(tree); git_tree_free(tree);
if (error < 0) if (error < 0)
return error; return error;
return git_object_lookup(out, repo, &oid, GIT_OBJ_ANY); return git_object_lookup(out, repo, &oid, GIT_OBJ_ANY);
} }
...@@ -623,7 +623,7 @@ static int revparse_global_grep(git_object **out, git_repository *repo, const ch ...@@ -623,7 +623,7 @@ static int revparse_global_grep(git_object **out, git_repository *repo, const ch
} }
if (!resultobj) { if (!resultobj) {
giterr_set(GITERR_REFERENCE, "Couldn't find a match for %s", pattern); giterr_set(GITERR_REFERENCE, "Couldn't find a match for %s", pattern);
git_object_free(walkobj); git_object_free(walkobj);
} else { } else {
*out = resultobj; *out = resultobj;
} }
......
...@@ -104,6 +104,9 @@ void test_refs_revparse__to_type(void) ...@@ -104,6 +104,9 @@ void test_refs_revparse__to_type(void)
void test_refs_revparse__linear_history(void) void test_refs_revparse__linear_history(void)
{ {
cl_git_fail(git_revparse_single(&g_obj, g_repo, "foo~bar"));
cl_git_fail(git_revparse_single(&g_obj, g_repo, "master~bar"));
test_object("master~0", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750"); test_object("master~0", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
test_object("master~1", "be3563ae3f795b2b4353bcce3a527ad0a4f7f644"); test_object("master~1", "be3563ae3f795b2b4353bcce3a527ad0a4f7f644");
test_object("master~2", "9fd738e8f7967c078dceed8190330fc8648ee56a"); test_object("master~2", "9fd738e8f7967c078dceed8190330fc8648ee56a");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment