Fix: segfault on error handling
[babeltrace.git] / formats / ctf / ctf.c
index 32206166b2a2c43a637dbf7e0e36489d297bd0da..ad218c0f3aeb5a5f50ca4c34bb5d1d0451a7f11f 100644 (file)
@@ -983,7 +983,8 @@ end:
        ctf_scanner_free(scanner);
 end_scanner_alloc:
 end_packet_read:
-       fclose(fp);
+       if (fp)
+               fclose(fp);
        free(buf);
 end_stream:
        close(metadata_stream->pos.fd);
@@ -1718,6 +1719,18 @@ void ctf_close_trace(struct trace_descriptor *tdp)
                        struct bt_ctf_event_decl *event;
 
                        event = g_ptr_array_index(td->event_declarations, i);
+                       if (event->context_decl)
+                               g_ptr_array_free(event->context_decl, TRUE);
+                       if (event->fields_decl)
+                               g_ptr_array_free(event->fields_decl, TRUE);
+                       if (event->packet_header_decl)
+                               g_ptr_array_free(event->packet_header_decl, TRUE);
+                       if (event->event_context_decl)
+                               g_ptr_array_free(event->event_context_decl, TRUE);
+                       if (event->event_header_decl)
+                               g_ptr_array_free(event->event_header_decl, TRUE);
+                       if (event->packet_context_decl)
+                               g_ptr_array_free(event->packet_context_decl, TRUE);
                        g_free(event);
                }
                g_ptr_array_free(td->event_declarations, TRUE);
This page took 0.023009 seconds and 4 git commands to generate.