@@ -172,15 +172,19 @@ Status MakeListArray(const std::shared_ptr<Array>& child_array, int num_lists,
172172
173173 offsets[num_lists] = static_cast <offset_type>(child_array->length ());
174174
175- // / TODO(wesm): Implement support for nulls in ListArray::FromArrays
176- std::shared_ptr<Buffer> null_bitmap, offsets_buffer;
175+ // Create offsets array
176+ using OffsetArrowType = typename TypeTraits<TypeClass>::OffsetType;
177+ std::shared_ptr<Array> offsets_array;
178+ ArrayFromVector<OffsetArrowType, offset_type>(offsets, &offsets_array);
179+
180+ // Create null bitmap
181+ std::shared_ptr<Buffer> null_bitmap;
177182 RETURN_NOT_OK (GetBitmapFromVector (valid_lists, &null_bitmap));
178- RETURN_NOT_OK (CopyBufferFromVector (offsets, pool, &offsets_buffer));
179183
180- *out = std::make_shared<ArrayType>(std::make_shared<TypeClass>(child_array-> type ()),
181- num_lists, offsets_buffer, child_array, null_bitmap ,
182- kUnknownNullCount );
183- return (**out). Validate ();
184+ // Use FromArrays which supports nulls via null_bitmap parameter
185+ ARROW_ASSIGN_OR_RAISE (*out, ArrayType::FromArrays (*offsets_array, * child_array, pool ,
186+ null_bitmap, kUnknownNullCount ) );
187+ return Status::OK ();
184188}
185189
186190Status MakeRandomListViewArray (const std::shared_ptr<Array>& child_array, int num_lists,
0 commit comments