From fbecfc6c49e69a83d536058c6eb7faeefe886d3c Mon Sep 17 00:00:00 2001 From: JONBRWN Date: Tue, 28 Apr 2026 10:29:44 -0700 Subject: [PATCH] fix(list): use valid empty offsets in ListArray::new_empty OffsetsBuffer::default() produces a zero-length offsets buffer, which violates the Arrow spec (N elements require N+1 offsets). When new_null_array() recurses through nested list types via new_empty_array(), every child level gets an empty offset buffer. PyArrow 14 segfaults in _table_to_blocks when it encounters these zero-length child offset buffers during to_pandas() conversion. Fixes ENG-6097 Co-Authored-By: Claude Sonnet 4.6 --- src/array/list/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/array/list/mod.rs b/src/array/list/mod.rs index 6d6fe22eb8..60e73503c7 100644 --- a/src/array/list/mod.rs +++ b/src/array/list/mod.rs @@ -89,7 +89,7 @@ impl ListArray { /// Returns a new empty [`ListArray`]. pub fn new_empty(data_type: DataType) -> Self { let values = new_empty_array(Self::get_child_type(&data_type).clone()); - Self::new(data_type, OffsetsBuffer::default(), values, None) + Self::new(data_type, Offsets::new_zeroed(0).into(), values, None) } /// Returns a new null [`ListArray`].