Commit b8460c20 by nulltoken

revparse: do not segfault when retrieving the last entry

parent e7279381
...@@ -263,7 +263,7 @@ static int walk_ref_history(git_object **out, git_repository *repo, const char * ...@@ -263,7 +263,7 @@ static int walk_ref_history(git_object **out, git_repository *repo, const char *
retcode = revparse_lookup_fully_qualifed_ref(out, repo, git_buf_cstr(&buf)); retcode = revparse_lookup_fully_qualifed_ref(out, repo, git_buf_cstr(&buf));
else if (!git_reflog_read(&reflog, disambiguated)) { else if (!git_reflog_read(&reflog, disambiguated)) {
int numentries = git_reflog_entrycount(reflog); int numentries = git_reflog_entrycount(reflog);
if (numentries < n) { if (numentries < n + 1) {
giterr_set(GITERR_REFERENCE, "Reflog for '%s' has only %d entries, asked for %d", giterr_set(GITERR_REFERENCE, "Reflog for '%s' has only %d entries, asked for %d",
git_buf_cstr(&buf), numentries, n); git_buf_cstr(&buf), numentries, n);
retcode = GIT_ENOTFOUND; retcode = GIT_ENOTFOUND;
......
...@@ -156,6 +156,7 @@ void test_refs_revparse__ordinal(void) ...@@ -156,6 +156,7 @@ void test_refs_revparse__ordinal(void)
test_object("nope@{0}", NULL); test_object("nope@{0}", NULL);
test_object("master@{31415}", NULL); test_object("master@{31415}", NULL);
test_object("@{1000}", NULL); test_object("@{1000}", NULL);
test_object("@{2}", NULL);
test_object("@{0}", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750"); test_object("@{0}", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
test_object("@{1}", "be3563ae3f795b2b4353bcce3a527ad0a4f7f644"); test_object("@{1}", "be3563ae3f795b2b4353bcce3a527ad0a4f7f644");
......
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