X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=plugins%2Fctf%2Ffs-src%2Fmetadata.c;h=e949374d6320dbfa2005961ae111eaa32df05c2f;hp=619e75a02380dc27812cad89cc123d598cab4037;hb=44c440bc5fe8219cc17d1b786d91fd83c4c9860a;hpb=c800eb3790218d2f33df01e77ec38cbd43cc02a1 diff --git a/plugins/ctf/fs-src/metadata.c b/plugins/ctf/fs-src/metadata.c index 619e75a0..e949374d 100644 --- a/plugins/ctf/fs-src/metadata.c +++ b/plugins/ctf/fs-src/metadata.c @@ -91,7 +91,6 @@ int ctf_fs_metadata_set_trace(struct ctf_fs_trace *ctf_fs_trace, { int ret = 0; struct ctf_fs_file *file = NULL; - struct ctf_metadata_decoder *metadata_decoder = NULL; struct ctf_metadata_decoder_config decoder_config = { .clock_class_offset_s = config ? config->clock_class_offset_s : 0, .clock_class_offset_ns = config ? config->clock_class_offset_ns : 0, @@ -104,28 +103,32 @@ int ctf_fs_metadata_set_trace(struct ctf_fs_trace *ctf_fs_trace, goto end; } - metadata_decoder = ctf_metadata_decoder_create( + ctf_fs_trace->metadata->decoder = ctf_metadata_decoder_create( config ? &decoder_config : NULL, ctf_fs_trace->name->str); - if (!metadata_decoder) { + if (!ctf_fs_trace->metadata->decoder) { BT_LOGE("Cannot create metadata decoder object"); ret = -1; goto end; } - ret = ctf_metadata_decoder_decode(metadata_decoder, file->fp); + ret = ctf_metadata_decoder_decode(ctf_fs_trace->metadata->decoder, + file->fp); if (ret) { BT_LOGE("Cannot decode metadata file"); goto end; } - ctf_fs_trace->metadata->trace = ctf_metadata_decoder_get_trace( - metadata_decoder); + ctf_fs_trace->metadata->trace = ctf_metadata_decoder_get_ir_trace( + ctf_fs_trace->metadata->decoder); BT_ASSERT(ctf_fs_trace->metadata->trace); + ctf_fs_trace->metadata->tc = + ctf_metadata_decoder_borrow_ctf_trace_class( + ctf_fs_trace->metadata->decoder); + BT_ASSERT(ctf_fs_trace->metadata->tc); end: ctf_fs_file_destroy(file); - ctf_metadata_decoder_destroy(metadata_decoder); return ret; } @@ -144,4 +147,8 @@ void ctf_fs_metadata_fini(struct ctf_fs_metadata *metadata) if (metadata->trace) { BT_PUT(metadata->trace); } + + if (metadata->decoder) { + ctf_metadata_decoder_destroy(metadata->decoder); + } }