From: Jérémie Galarneau Date: Thu, 21 Nov 2013 23:07:20 +0000 (-0500) Subject: Fix: Use the bt_iter_set_pos function to set the begin_pos X-Git-Tag: v1.2.0-rc1~45 X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=d899d6de0f3ee37fdb4400dcf05e83c52cd4173c Fix: Use the bt_iter_set_pos function to set the begin_pos 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 --- 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);