X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=formats%2Fctf%2Fctf.c;h=c369d8d36487ae79980a1caa747a79a4f2f916ec;hp=f33fa3394ec52be5d11c4dd102ffb468025156ca;hb=bcbfb8bf88ea9afbecd8a79708939fb8b79e5734;hpb=03798a93f959f6c694fe98f5647481947607c604 diff --git a/formats/ctf/ctf.c b/formats/ctf/ctf.c index f33fa339..c369d8d3 100644 --- a/formats/ctf/ctf.c +++ b/formats/ctf/ctf.c @@ -167,6 +167,9 @@ uint64_t ctf_timestamp_begin(struct trace_descriptor *descriptor, if (!stream_pos->packet_real_index) goto error; + if (stream_pos->packet_real_index->len <= 0) + continue; + if (type == BT_CLOCK_REAL) { index = &g_array_index(stream_pos->packet_real_index, struct packet_index, @@ -225,6 +228,9 @@ uint64_t ctf_timestamp_end(struct trace_descriptor *descriptor, if (!stream_pos->packet_real_index) goto error; + if (stream_pos->packet_real_index->len <= 0) + continue; + if (type == BT_CLOCK_REAL) { index = &g_array_index(stream_pos->packet_real_index, struct packet_index, @@ -1005,6 +1011,7 @@ int ctf_open_trace_metadata_read(struct ctf_trace *td, if (metadata_fp) { fp = metadata_fp; + metadata_stream->pos.fd = -1; } else { td->metadata = &metadata_stream->parent; metadata_stream->pos.fd = openat(td->dirfd, "metadata", O_RDONLY); @@ -1084,7 +1091,8 @@ end_packet_read: fclose(fp); free(buf); end_stream: - close(metadata_stream->pos.fd); + if (metadata_stream->pos.fd >= 0) + close(metadata_stream->pos.fd); if (ret) g_free(metadata_stream); return ret; @@ -1740,6 +1748,11 @@ int ctf_open_mmap_stream_read(struct ctf_trace *td, if (ret) goto error_index; + /* + * For now, only a single slock is supported. + */ + file_stream->parent.current_clock = td->single_clock; + /* Add stream file to stream class */ g_ptr_array_add(file_stream->parent.stream_class->streams, &file_stream->parent); @@ -1845,6 +1858,9 @@ int ctf_convert_index_timestamp(struct trace_descriptor *tdp) stream_pos->packet_real_index = g_array_new(FALSE, TRUE, sizeof(struct packet_index)); + if (!stream_pos->packet_cycles_index) + continue; + for (k = 0; k < stream_pos->packet_cycles_index->len; k++) { struct packet_index *index; struct packet_index new_index;