From d899d6de0f3ee37fdb4400dcf05e83c52cd4173c Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Thu, 21 Nov 2013 18:07:20 -0500 Subject: [PATCH] Fix: Use the bt_iter_set_pos function to set the begin_pos MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The current implementation of bt_iter_init asserts on begin_pos that are not BT_SEEK_BEGIN. This uses the iterator set_pos function to achieve the intended behavior. Signed-off-by: Jérémie Galarneau --- lib/iterator.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/lib/iterator.c b/lib/iterator.c index 009fcd3f..966a0001 100644 --- a/lib/iterator.c +++ b/lib/iterator.c @@ -702,23 +702,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; @@ -734,7 +728,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); -- 2.34.1