This fixes an issue when empty streams are created as the stream
creation will mmap() the file in preparation for the first event.
This results in "empty" stream files ending up with a non-zero size
which is invalid since no packet headers are found by the reader.
This change ensures that stream files are only mmap'ed on the first
stream flush and that empty streams are stored as size-0 files.
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
pos->parent.rw_table = write_dispatch_table;
pos->parent.event_cb = ctf_write_event;
pos->parent.trace = trace;
- if (fd >= 0)
- ctf_packet_seek(&pos->parent, 0, SEEK_SET); /* position for write */
break;
default:
assert(0);
goto end;
}
- if (stream->flushed_packet_count) {
- /* ctf_init_pos has already initialized the first packet */
- ctf_packet_seek(&stream->pos.parent, 0, SEEK_CUR);
- }
+ /* mmap the next packet */
+ ctf_packet_seek(&stream->pos.parent, 0, SEEK_CUR);
ret = bt_ctf_field_serialize(stream->packet_header, &stream->pos);
if (ret) {