X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fjournal%2Fjournal-file.c;h=83f603ac821b0af1ac521a6b8b992bd754ffe362;hb=ecf68b1d3833c2ee3156a813ad42cf155dc4ace4;hp=db64a32e615935d2dc5434396ccda4d19de34f77;hpb=10b6f904cc58c5a725f123e17819516eca606a3e;p=elogind.git diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c index db64a32e6..83f603ac8 100644 --- a/src/journal/journal-file.c +++ b/src/journal/journal-file.c @@ -1275,7 +1275,11 @@ static int generic_array_bisect_plus_one(JournalFile *f, r = test_object(f, extra, needle); if (r < 0) return r; - else if (r == TEST_FOUND) { + + if (r == TEST_FOUND) + r = direction == DIRECTION_DOWN ? TEST_RIGHT : TEST_LEFT; + + if (r == TEST_RIGHT) { Object *o; r = journal_file_move_to_object(f, OBJECT_ENTRY, extra, &o); @@ -1292,12 +1296,11 @@ static int generic_array_bisect_plus_one(JournalFile *f, *idx = 0; return 1; - } else if (r == TEST_RIGHT) - return 0; + } r = generic_array_bisect(f, first, n-1, needle, test_object, direction, ret, offset, idx); - if (r > 0) + if (r > 0 && idx) (*idx) ++; return r;