X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=lib%2Fiterator.c;h=a2a7bb578adca29313b9bda620382bfe67b8248c;hp=3280f4a816c3a88468dfb99dd320111c24ded54d;hb=024e61817685a20caceb4e3ef3bdc019a7af6b6e;hpb=8382544f2fbd3c07bc36a73d02541ad31edac6a6 diff --git a/lib/iterator.c b/lib/iterator.c index 3280f4a8..a2a7bb57 100644 --- a/lib/iterator.c +++ b/lib/iterator.c @@ -705,23 +705,17 @@ int bt_iter_init(struct bt_iter *iter, for (filenr = 0; filenr < stream->streams->len; filenr++) { struct ctf_file_stream *file_stream; + struct bt_iter_pos pos; file_stream = g_ptr_array_index(stream->streams, filenr); if (!file_stream) continue; - if (begin_pos) { - ret = babeltrace_filestream_seek( - file_stream, - begin_pos, - stream_id); - } else { - struct bt_iter_pos pos; - pos.type = BT_SEEK_BEGIN; - ret = babeltrace_filestream_seek( - file_stream, &pos, - stream_id); - } + + pos.type = BT_SEEK_BEGIN; + ret = babeltrace_filestream_seek(file_stream, + &pos, stream_id); + if (ret == EOF) { ret = 0; continue; @@ -737,7 +731,11 @@ int bt_iter_init(struct bt_iter *iter, } ctx->current_iterator = iter; - return 0; + if (begin_pos && begin_pos->type != BT_SEEK_BEGIN) { + ret = bt_iter_set_pos(iter, begin_pos); + } + + return ret; error: bt_heap_free(iter->stream_heap);