summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/revparse.c5
-rw-r--r--tests-clar/refs/revparse.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/src/revparse.c b/src/revparse.c
index 7cb96b806..3487f5638 100644
--- a/src/revparse.c
+++ b/src/revparse.c
@@ -564,7 +564,10 @@ int git_revparse_single(git_object **out, git_repository *repo, const char *spec
if (current_state != next_state && next_state != REVPARSE_STATE_DONE) {
/* Leaving INIT state, find the object specified, in case that state needs it */
- revparse_lookup_object(&next_obj, repo, git_buf_cstr(&specbuffer));
+ if (revparse_lookup_object(&next_obj, repo, git_buf_cstr(&specbuffer)) < 0) {
+ retcode = GIT_ERROR;
+ next_state = REVPARSE_STATE_DONE;
+ }
}
break;
diff --git a/tests-clar/refs/revparse.c b/tests-clar/refs/revparse.c
index b8318923d..31a832aca 100644
--- a/tests-clar/refs/revparse.c
+++ b/tests-clar/refs/revparse.c
@@ -36,6 +36,8 @@ void test_refs_revparse__cleanup(void)
void test_refs_revparse__nonexistant_object(void)
{
cl_git_fail(git_revparse_single(&g_obj, g_repo, "this doesn't exist"));
+ cl_git_fail(git_revparse_single(&g_obj, g_repo, "this doesn't exist^1"));
+ cl_git_fail(git_revparse_single(&g_obj, g_repo, "this doesn't exist~2"));
}
void test_refs_revparse__shas(void)