projects
/
babeltrace.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: complete error handling of babeltrace API
[babeltrace.git]
/
lib
/
iterator.c
diff --git
a/lib/iterator.c
b/lib/iterator.c
index 0d101048720fed7944524ef080b542ed26c6a783..f5f413e2ee6038105889c251047619bd152a6383 100644
(file)
--- a/
lib/iterator.c
+++ b/
lib/iterator.c
@@
-192,6
+192,9
@@
int bt_iter_set_pos(struct bt_iter *iter, const struct bt_iter_pos *iter_pos)
struct trace_collection *tc;
int i, ret;
struct trace_collection *tc;
int i, ret;
+ if (!iter || !iter_pos)
+ return -EINVAL;
+
switch (iter_pos->type) {
case BT_SEEK_RESTORE:
if (!iter_pos->u.restore)
switch (iter_pos->type) {
case BT_SEEK_RESTORE:
if (!iter_pos->u.restore)
@@
-349,11
+352,15
@@
error_heap_init:
struct bt_iter_pos *bt_iter_get_pos(struct bt_iter *iter)
{
struct bt_iter_pos *pos;
struct bt_iter_pos *bt_iter_get_pos(struct bt_iter *iter)
{
struct bt_iter_pos *pos;
- struct trace_collection *tc
= iter->ctx->tc
;
+ struct trace_collection *tc;
struct ctf_file_stream *file_stream = NULL, *removed;
struct ptr_heap iter_heap_copy;
int ret;
struct ctf_file_stream *file_stream = NULL, *removed;
struct ptr_heap iter_heap_copy;
int ret;
+ if (!iter)
+ return NULL;
+
+ tc = iter->ctx->tc;
pos = g_new0(struct bt_iter_pos, 1);
pos->type = BT_SEEK_RESTORE;
pos->u.restore = g_new0(struct bt_saved_pos, 1);
pos = g_new0(struct bt_iter_pos, 1);
pos->type = BT_SEEK_RESTORE;
pos->u.restore = g_new0(struct bt_saved_pos, 1);
@@
-412,6
+419,9
@@
struct bt_iter_pos *bt_iter_create_time_pos(struct bt_iter *iter,
{
struct bt_iter_pos *pos;
{
struct bt_iter_pos *pos;
+ if (!iter)
+ return NULL;
+
pos = g_new0(struct bt_iter_pos, 1);
pos->type = BT_SEEK_TIME;
pos->u.seek_time = timestamp;
pos = g_new0(struct bt_iter_pos, 1);
pos->type = BT_SEEK_TIME;
pos->u.seek_time = timestamp;
@@
-429,6
+439,9
@@
static int babeltrace_filestream_seek(struct ctf_file_stream *file_stream,
{
int ret = 0;
{
int ret = 0;
+ if (!file_stream || !begin_pos)
+ return -EINVAL;
+
switch (begin_pos->type) {
case BT_SEEK_CUR:
/*
switch (begin_pos->type) {
case BT_SEEK_CUR:
/*
@@
-459,6
+472,9
@@
int bt_iter_init(struct bt_iter *iter,
int i, stream_id;
int ret = 0;
int i, stream_id;
int ret = 0;
+ if (!iter || !ctx)
+ return -EINVAL;
+
if (ctx->current_iterator) {
ret = -1;
goto error_ctx;
if (ctx->current_iterator) {
ret = -1;
goto error_ctx;
@@
-544,6
+560,9
@@
struct bt_iter *bt_iter_create(struct bt_context *ctx,
struct bt_iter *iter;
int ret;
struct bt_iter *iter;
int ret;
+ if (!ctx)
+ return NULL;
+
iter = g_new0(struct bt_iter, 1);
ret = bt_iter_init(iter, ctx, begin_pos, end_pos);
if (ret) {
iter = g_new0(struct bt_iter, 1);
ret = bt_iter_init(iter, ctx, begin_pos, end_pos);
if (ret) {
@@
-555,6
+574,7
@@
struct bt_iter *bt_iter_create(struct bt_context *ctx,
void bt_iter_fini(struct bt_iter *iter)
{
void bt_iter_fini(struct bt_iter *iter)
{
+ assert(iter);
if (iter->stream_heap) {
heap_free(iter->stream_heap);
g_free(iter->stream_heap);
if (iter->stream_heap) {
heap_free(iter->stream_heap);
g_free(iter->stream_heap);
@@
-565,6
+585,7
@@
void bt_iter_fini(struct bt_iter *iter)
void bt_iter_destroy(struct bt_iter *iter)
{
void bt_iter_destroy(struct bt_iter *iter)
{
+ assert(iter);
bt_iter_fini(iter);
g_free(iter);
}
bt_iter_fini(iter);
g_free(iter);
}
@@
-574,6
+595,9
@@
int bt_iter_next(struct bt_iter *iter)
struct ctf_file_stream *file_stream, *removed;
int ret;
struct ctf_file_stream *file_stream, *removed;
int ret;
+ if (!iter)
+ return -EINVAL;
+
file_stream = heap_maximum(iter->stream_heap);
if (!file_stream) {
/* end of file for all streams */
file_stream = heap_maximum(iter->stream_heap);
if (!file_stream) {
/* end of file for all streams */
This page took
0.024554 seconds
and
4
git commands to generate.