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 <jdesfossez@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
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;
if (ret != 0 && ret != EOF) {
goto error;
}
+ ret = heap_insert(iter->stream_heap, file_stream);
+ if (ret)
+ goto error;
}
}
}