mr-smidge commented on a change in pull request #7158: URL: https://github.com/apache/arrow/pull/7158#discussion_r428942418
########## File path: csharp/src/Apache.Arrow/ArrowBuffer.Builder.cs ########## @@ -80,27 +140,63 @@ public Builder<T> AppendRange(IEnumerable<T> values) return this; } - public Builder<T> Reserve(int capacity) + /// <summary> + /// Reserve a given number of items' additional capacity. + /// </summary> + /// <param name="additionalCapacity">Number of items of required additional capacity.</param> + /// <returns>Returns the builder (for fluent-style composition).</returns> + public Builder<T> Reserve(int additionalCapacity) { - EnsureCapacity(capacity); + if (additionalCapacity < 0) + { + throw new ArgumentOutOfRangeException(nameof(additionalCapacity)); + } + + EnsureAdditionalCapacity(additionalCapacity); return this; } + /// <summary> + /// Resize the buffer to a given size. + /// </summary> + /// <remarks> + /// Note that if the required capacity is larger than the current length of the populated buffer so far, + /// the buffer's contents in the new, expanded region are undefined. Review comment: I've explicitly added this statement to the docstring (and in `BitmapBuilder`), because it's not obvious. If a buffer is resized down, and then resized up again, what are the contents in the expanded portion? Are they cleared to default? Are they the previous contents before it was resized downwards? Slightly tricky question, so I've avoided the trouble by making this statement explicit. Feedback appreciated. Perhaps we add a new JIRA if we want to implement well-defined contents after an enlarging resize. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org