ctf.fs source: recurse to find multiples CTF traces
[babeltrace.git] / plugins / ctf / common / metadata / decoder.c
index 81d6ddef7837e0127efdbd8f3a2e70223fc95941..6d60c619a2828e8db1d7e5025430b628844e445f 100644 (file)
@@ -248,6 +248,7 @@ error:
 
        if (*buf) {
                free(*buf);
+               *buf = NULL;
        }
 
 end:
@@ -264,7 +265,7 @@ int ctf_metadata_decoder_packetized_file_stream_to_buf(
 
 BT_HIDDEN
 struct ctf_metadata_decoder *ctf_metadata_decoder_create(FILE *err,
-               uint64_t clock_class_offset_ns)
+               uint64_t clock_class_offset_ns, const char *name)
 {
        struct ctf_metadata_decoder *mdec =
                g_new0(struct ctf_metadata_decoder, 1);
@@ -275,7 +276,7 @@ struct ctf_metadata_decoder *ctf_metadata_decoder_create(FILE *err,
 
        mdec->err_stream = err;
        mdec->visitor = ctf_visitor_generate_ir_create(err,
-               clock_class_offset_ns);
+               clock_class_offset_ns, name);
        if (!mdec->visitor) {
                ctf_metadata_decoder_destroy(mdec);
                mdec = NULL;
@@ -320,6 +321,11 @@ enum ctf_metadata_decoder_status ctf_metadata_decoder_decode(
                        goto end;
                }
 
+               if (strlen(buf) == 0) {
+                       /* An empty metadata packet is OK. */
+                       goto end;
+               }
+
                /* Convert the real file pointer to a memory file pointer */
                fp = bt_fmemopen(buf, strlen(buf), "rb");
                close_fp = true;
This page took 0.024776 seconds and 4 git commands to generate.