X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=lib%2Ftrace-collection.c;h=9bc5b1fcc8b0ecc543dd65b7a67734f4c44c8968;hb=7f89ddce05f0a5c985d6333fbe70a992da4bd244;hp=42d809623d419d22d2df194fe88e45c92ae6592b;hpb=17d37c4d92c1f0f8e81b18ae1cde2c509dc06d54;p=babeltrace.git diff --git a/lib/trace-collection.c b/lib/trace-collection.c index 42d80962..9bc5b1fc 100644 --- a/lib/trace-collection.c +++ b/lib/trace-collection.c @@ -132,13 +132,18 @@ static void clock_add(gpointer key, gpointer value, gpointer user_data) /* * Whenever we add a trace to the trace collection, check that we can - * correlate this trace with at least one other clock in the trace. + * correlate this trace with at least one other clock in the trace and + * convert the index from cycles to real time. */ int trace_collection_add(struct trace_collection *tc, struct trace_descriptor *td) { - struct ctf_trace *trace = container_of(td, struct ctf_trace, parent); + struct ctf_trace *trace; + if (!tc || !td) + return -EINVAL; + + trace = container_of(td, struct ctf_trace, parent); g_ptr_array_add(tc->array, td); trace->collection = tc; @@ -177,6 +182,7 @@ int trace_collection_add(struct trace_collection *tc, clock_add, &clock_match); } + return 0; error: return -EPERM; @@ -185,6 +191,9 @@ error: int trace_collection_remove(struct trace_collection *tc, struct trace_descriptor *td) { + if (!tc || !td) + return -EINVAL; + if (g_ptr_array_remove(tc->array, td)) { return 0; } else { @@ -195,6 +204,7 @@ int trace_collection_remove(struct trace_collection *tc, void init_trace_collection(struct trace_collection *tc) { + assert(tc); tc->array = g_ptr_array_new(); tc->clocks = g_hash_table_new(g_direct_hash, g_direct_equal); tc->single_clock_offset_avg = 0; @@ -209,6 +219,7 @@ void init_trace_collection(struct trace_collection *tc) */ void finalize_trace_collection(struct trace_collection *tc) { + assert(tc); g_ptr_array_free(tc->array, TRUE); g_hash_table_destroy(tc->clocks); }