From 8060cdc93cc185e9a71c1aa17091dc0a5ab14457 Mon Sep 17 00:00:00 2001 From: Michael Schubert Date: Thu, 27 Sep 2012 14:59:43 +0200 Subject: [PATCH] revwalk: fix off-by-one error Fixes #921. --- src/revwalk.c | 3 ++- tests-clar/odb/foreach.c | 2 +- .../1a/443023183e3f2bfbef8ac923cd81c1018a18fd | Bin 0 -> 122 bytes .../9f/13f7d0a9402c681f91dc590cf7b5470e6a77d2 | 2 ++ .../fd/4959ce7510db09d4d8217fa2d1780413e05a09 | Bin 0 -> 152 bytes tests-clar/revwalk/mergebase.c | 9 +++++++++ 6 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 tests-clar/resources/testrepo.git/objects/1a/443023183e3f2bfbef8ac923cd81c1018a18fd create mode 100644 tests-clar/resources/testrepo.git/objects/9f/13f7d0a9402c681f91dc590cf7b5470e6a77d2 create mode 100644 tests-clar/resources/testrepo.git/objects/fd/4959ce7510db09d4d8217fa2d1780413e05a09 diff --git a/src/revwalk.c b/src/revwalk.c index 8141d177b..4fff238ca 100644 --- a/src/revwalk.c +++ b/src/revwalk.c @@ -274,7 +274,8 @@ static int commit_parse(git_revwalk *walk, commit_object *commit) static int interesting(git_pqueue *list) { unsigned int i; - for (i = 1; i < git_pqueue_size(list); i++) { + /* element 0 isn't used - we need to start at 1 */ + for (i = 1; i < list->size; i++) { commit_object *commit = list->d[i]; if ((commit->flags & STALE) == 0) return 1; diff --git a/tests-clar/odb/foreach.c b/tests-clar/odb/foreach.c index c1304a2e4..bf52cc1b5 100644 --- a/tests-clar/odb/foreach.c +++ b/tests-clar/odb/foreach.c @@ -42,7 +42,7 @@ void test_odb_foreach__foreach(void) git_repository_odb(&_odb, _repo); cl_git_pass(git_odb_foreach(_odb, foreach_cb, NULL)); - cl_assert_equal_i(43 + 1640, nobj); /* count + in-pack */ + cl_assert_equal_i(46 + 1640, nobj); /* count + in-pack */ } void test_odb_foreach__one_pack(void) diff --git a/tests-clar/resources/testrepo.git/objects/1a/443023183e3f2bfbef8ac923cd81c1018a18fd b/tests-clar/resources/testrepo.git/objects/1a/443023183e3f2bfbef8ac923cd81c1018a18fd new file mode 100644 index 0000000000000000000000000000000000000000..3ec541288fd04106cb69bc53e8ad085dd550b847 GIT binary patch literal 122 zcmV-=0EPc}0iBIO3IZ_CifV?>)s7M^1Y%!`;&LUMT;ÔÂÁ…¬£³X†ÂEÈŽ5R±£ ÛAÑE &n}ZÜæ™A¹ \ No newline at end of file diff --git a/tests-clar/resources/testrepo.git/objects/fd/4959ce7510db09d4d8217fa2d1780413e05a09 b/tests-clar/resources/testrepo.git/objects/fd/4959ce7510db09d4d8217fa2d1780413e05a09 new file mode 100644 index 0000000000000000000000000000000000000000..158aef21ffce476dd1b33167cbcc926dfa00141f GIT binary patch literal 152 zcmV;J0B8Sr0iBLP3IZ_