Handle empty streams on iterator init
[babeltrace.git] / lib / iterator.c
index 155fcbe6f7382a332ba3967e0cde86b21f5b40f7..3280f4a816c3a88468dfb99dd320111c24ded54d 100644 (file)
@@ -725,7 +725,7 @@ int bt_iter_init(struct bt_iter *iter,
                                if (ret == EOF) {
                                        ret = 0;
                                        continue;
-                               } else if (ret) {
+                               } else if (ret != 0 && ret != EAGAIN) {
                                        goto error;
                                }
                                /* Add to heap */
@@ -821,6 +821,13 @@ reinsert:
        removed = bt_heap_replace_max(iter->stream_heap, file_stream);
        assert(removed == file_stream);
 
+       file_stream = bt_heap_maximum(iter->stream_heap);
+       if (file_stream->pos.content_size == 0) {
+               ret = EAGAIN;
+       } else {
+               ret = 0;
+       }
+
 end:
        return ret;
 }
This page took 0.023218 seconds and 4 git commands to generate.