From: Julien Desfossez Date: Thu, 2 Aug 2012 21:45:54 +0000 (-0400) Subject: Fix: Restore heap for SEEK_BEGIN X-Git-Tag: v1.0.0-rc5~44 X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=db8a45114dfe2ffd2b23ec0517a043b508de41fd Fix: Restore heap for SEEK_BEGIN We don't know in which state the heap is when we call a SEEK_BEGIN, so we need to clear it and populate it when all the filestreams are in place. Fixes: #319 Signed-off-by: Julien Desfossez Signed-off-by: Mathieu Desnoyers --- diff --git a/lib/iterator.c b/lib/iterator.c index 65429a89..60e877ec 100644 --- a/lib/iterator.c +++ b/lib/iterator.c @@ -276,6 +276,11 @@ int bt_iter_set_pos(struct bt_iter *iter, const struct bt_iter_pos *iter_pos) return 0; case BT_SEEK_BEGIN: tc = iter->ctx->tc; + heap_free(iter->stream_heap); + ret = heap_init(iter->stream_heap, 0, stream_compare); + if (ret < 0) + goto error; + for (i = 0; i < tc->array->len; i++) { struct ctf_trace *tin; struct trace_descriptor *td_read; @@ -310,6 +315,9 @@ int bt_iter_set_pos(struct bt_iter *iter, const struct bt_iter_pos *iter_pos) if (ret != 0 && ret != EOF) { goto error; } + ret = heap_insert(iter->stream_heap, file_stream); + if (ret) + goto error; } } }