diff --git a/cpp/src/arrow/c/bridge.cc b/cpp/src/arrow/c/bridge.cc index dd25ed299dd..807df72bdba 100644 --- a/cpp/src/arrow/c/bridge.cc +++ b/cpp/src/arrow/c/bridge.cc @@ -533,7 +533,7 @@ namespace { struct ExportedArrayPrivateData : PoolAllocationMixin { // The buffers are owned by the ArrayData member SmallVector buffers_; - struct ArrowArray dictionary_ {}; + struct ArrowArray dictionary_{}; SmallVector children_; SmallVector child_pointers_; @@ -2629,6 +2629,10 @@ class AsyncRecordBatchIterator { private_data->state_->schema_ = maybe_schema.MoveValueUnsafe(); private_data->fut_iterator_.MarkFinished(private_data->state_); + if (self->producer == nullptr) { + private_data->fut_iterator_.MarkFinished(Status::Invalid("Missing producer")); + return EINVAL; + } self->producer->request(self->producer, static_cast(private_data->state_->queue_size_)); return 0;