X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Fltt-newlib%2Ftracefile.c;h=65f618b8f2babf46f1f069ccc2b02439d0b17e34;hb=bed09760c8a10bc768d5bd9a888a687ccebf81a4;hp=e0f88554ee87e065185a439535e122e32f6bf729;hpb=54ecbf38947e9b647b11a58b27cf65d3c0985693;p=lttv.git diff --git a/ltt/branches/poly/ltt-newlib/tracefile.c b/ltt/branches/poly/ltt-newlib/tracefile.c index e0f88554..65f618b8 100644 --- a/ltt/branches/poly/ltt-newlib/tracefile.c +++ b/ltt/branches/poly/ltt-newlib/tracefile.c @@ -1177,7 +1177,20 @@ void ltt_tracefile_seek_time(LttTracefile *tf, LttTime time) g_error("Can not map block"); goto fail; } - if(ltt_time_compare(time, tf->buffer.start.timestamp) < 0) { + if(high == low) { + /* We cannot divide anymore : this is what would happen if the time + * requested was exactly between two consecutive buffers'end and start + * timestamps. This is also what would happend if we didn't deal with out + * of span cases prior in this function. */ + /* The event is right in the buffer! + * (or in the next buffer first event) */ + while(1) { + ltt_tracefile_read(tf); + if(ltt_time_compare(time, tf->event.event_time) >= 0) + break; + } + + } if(ltt_time_compare(time, tf->buffer.start.timestamp) < 0) { /* go to lower part */ high = block_num; } else if(ltt_time_compare(time, tf->buffer.end.timestamp) > 0) {