Fix: lib/iterator.c: unbalanced ctx put (leak)
[babeltrace.git] / lib / iterator.c
index 30a45423dfc1c2130b342aa7d274bd8dcd9b39d0..77093217cd2e8a979b5220cffc0a7492f88464c6 100644 (file)
@@ -778,6 +778,8 @@ int bt_iter_init(struct bt_iter *iter,
 error:
        bt_heap_free(iter->stream_heap);
 error_heap_init:
+       bt_context_put(ctx);
+       iter->ctx = NULL;
        g_free(iter->stream_heap);
        iter->stream_heap = NULL;
 error_ctx:
@@ -812,6 +814,7 @@ void bt_iter_fini(struct bt_iter *iter)
        }
        iter->ctx->current_iterator = NULL;
        bt_context_put(iter->ctx);
+       iter->ctx = NULL;
 }
 
 void bt_iter_destroy(struct bt_iter *iter)
@@ -864,6 +867,10 @@ int bt_iter_next(struct bt_iter *iter)
                 */
                ret = 0;
                goto reinsert;
+       } else if (ret == -ERANGE) {
+               removed = bt_heap_remove(iter->stream_heap);
+               assert(removed == file_stream);
+               goto end;
        } else if (ret) {
                goto end;
        }
This page took 0.026141 seconds and 4 git commands to generate.