diff --git a/csharp/src/Apache.Arrow/Ipc/ArrowReaderImplementation.cs b/csharp/src/Apache.Arrow/Ipc/ArrowReaderImplementation.cs index e41c19481fb63..4c2757abf57a6 100644 --- a/csharp/src/Apache.Arrow/Ipc/ArrowReaderImplementation.cs +++ b/csharp/src/Apache.Arrow/Ipc/ArrowReaderImplementation.cs @@ -216,8 +216,8 @@ private ArrayData[] GetChildren( var children = new ArrayData[childrenCount]; for (var index = 0; index < childrenCount; index++) { - Flatbuf.FieldNode childFieldNode = recordBatchEnumerator.CurrentNode; recordBatchEnumerator.MoveNextNode(); + Flatbuf.FieldNode childFieldNode = recordBatchEnumerator.CurrentNode; var childField = type.Children[index]; var child = childField.DataType.IsFixedPrimitive() diff --git a/csharp/test/Apache.Arrow.Tests/TestData.cs b/csharp/test/Apache.Arrow.Tests/TestData.cs index 68709e867eeee..db68f74dbd650 100644 --- a/csharp/test/Apache.Arrow.Tests/TestData.cs +++ b/csharp/test/Apache.Arrow.Tests/TestData.cs @@ -187,13 +187,15 @@ public void Visit(ListType type) var builder = new ListArray.Builder(type.ValueField).Reserve(Length); //Todo : Support various types - var valueBuilder = (Int64Array.Builder)builder.ValueBuilder.Reserve(Length); + var valueBuilder = (Int64Array.Builder)builder.ValueBuilder.Reserve(Length + 1); for (var i = 0; i < Length; i++) { builder.Append(); valueBuilder.Append(i); } + //Add a value to check if Values.Length can exceed ListArray.Length + valueBuilder.Append(0); Array = builder.Build();