Fix: Incorrect variant tag validation
[babeltrace.git] / formats / ctf / writer / stream.c
index f03f170d6a5ff7c09744149b4f4f2f9181eaa1f6..4efb369213cbbe7638b5ceaf1a473a38a0c5312f 100644 (file)
@@ -368,7 +368,7 @@ int bt_ctf_stream_flush(struct bt_ctf_stream *stream)
        int ret = 0;
        size_t i;
        uint64_t timestamp_begin, timestamp_end;
-       struct bt_ctf_stream_class *stream_class = stream->stream_class;
+       struct bt_ctf_stream_class *stream_class;
        struct bt_ctf_field *integer = NULL;
        struct ctf_stream_pos packet_context_pos;
 
@@ -385,6 +385,7 @@ int bt_ctf_stream_flush(struct bt_ctf_stream *stream)
                stream->flush.func(stream, stream->flush.data);
        }
 
+       stream_class = stream->stream_class;
        timestamp_begin = ((struct bt_ctf_event *) g_ptr_array_index(
                stream->events, 0))->timestamp;
        timestamp_end = ((struct bt_ctf_event *) g_ptr_array_index(
@@ -463,7 +464,10 @@ int bt_ctf_stream_flush(struct bt_ctf_stream *stream)
        /*
         * Update the packet total size and content size and overwrite the
         * packet context.
+        * Copy base_mma as the packet may have been remapped (e.g. when a
+        * packet is resized).
         */
+       packet_context_pos.base_mma = stream->pos.base_mma;
        ret = set_structure_field_integer(stream_class->packet_context,
                "content_size", stream->pos.offset);
        if (ret) {
@@ -518,7 +522,9 @@ void bt_ctf_stream_destroy(struct bt_ctf_ref *ref)
 
        stream = container_of(ref, struct bt_ctf_stream, ref_count);
        ctf_fini_pos(&stream->pos);
-       close(stream->pos.fd);
+       if (close(stream->pos.fd)) {
+               perror("close");
+       }
        bt_ctf_stream_class_put(stream->stream_class);
        g_ptr_array_free(stream->events, TRUE);
        g_free(stream);
This page took 0.023524 seconds and 4 git commands to generate.