chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
journal: fix bisection logic for first entry
[elogind.git]
/
src
/
journal
/
journal-file.c
diff --git
a/src/journal/journal-file.c
b/src/journal/journal-file.c
index db64a32e615935d2dc5434396ccda4d19de34f77..c468b226972d1ebffe02177584b384aaea642a6c 100644
(file)
--- 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;
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);
Object *o;
r = journal_file_move_to_object(f, OBJECT_ENTRY, extra, &o);
@@
-1292,8
+1296,7
@@
static int generic_array_bisect_plus_one(JournalFile *f,
*idx = 0;
return 1;
*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);
r = generic_array_bisect(f, first, n-1, needle, test_object, direction, ret, offset, idx);