From: Julien Desfossez Date: Wed, 25 Jul 2012 13:32:12 +0000 (-0400) Subject: Fix: check if handle is valid X-Git-Tag: v1.0.0-rc5~45 X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=5d95b2db86d36730ce4b7b5dffcfae32e0c21649;ds=sidebyside Fix: check if handle is valid Fixes: #317 [ Edit by Mathieu Desnoyers: put successful return at end of function, and error return with the test for error. ] Signed-off-by: Julien Desfossez Signed-off-by: Mathieu Desnoyers --- diff --git a/include/babeltrace/trace-handle.h b/include/babeltrace/trace-handle.h index 65171e70..4c85b670 100644 --- a/include/babeltrace/trace-handle.h +++ b/include/babeltrace/trace-handle.h @@ -34,19 +34,20 @@ struct bt_trace_handle; struct bt_ctf_event; /* - * bt_trace_handle_get_path : returns the path of a trace_handle. + * bt_trace_handle_get_path : returns the path of a trace_handle or NULL + * on error. */ const char *bt_trace_handle_get_path(struct bt_context *ctx, int handle_id); /* * bt_trace_handle_get_timestamp_begin : returns the creation time of the buffers - * of a trace. + * of a trace or -1ULL on error. */ uint64_t bt_trace_handle_get_timestamp_begin(struct bt_context *ctx, int handle_id); /* * bt_trace_handle_get_timestamp_end : returns the destruction timestamp of the - * buffers of a trace. + * buffers of a trace or -1ULL on error. */ uint64_t bt_trace_handle_get_timestamp_end(struct bt_context *ctx, int handle_id); diff --git a/lib/trace-handle.c b/lib/trace-handle.c index 6ba3ec20..050268f6 100644 --- a/lib/trace-handle.c +++ b/lib/trace-handle.c @@ -52,6 +52,8 @@ const char *bt_trace_handle_get_path(struct bt_context *ctx, int handle_id) handle = g_hash_table_lookup(ctx->trace_handles, (gpointer) (unsigned long) handle_id); + if (!handle) + return NULL; return handle->path; } @@ -61,6 +63,8 @@ uint64_t bt_trace_handle_get_timestamp_begin(struct bt_context *ctx, int handle_ handle = g_hash_table_lookup(ctx->trace_handles, (gpointer) (unsigned long) handle_id); + if (!handle) + return -1ULL; return handle->timestamp_begin; } @@ -70,5 +74,7 @@ uint64_t bt_trace_handle_get_timestamp_end(struct bt_context *ctx, int handle_id handle = g_hash_table_lookup(ctx->trace_handles, (gpointer) (unsigned long) handle_id); + if (!handle) + return -1ULL; return handle->timestamp_end; }