Buffer::from_slice_ref set correct capacity (#18)
Fixed ARROW-12504
diff --git a/arrow/src/buffer/immutable.rs b/arrow/src/buffer/immutable.rs
index cd6a2a3..f4aeae9 100644
--- a/arrow/src/buffer/immutable.rs
+++ b/arrow/src/buffer/immutable.rs
@@ -55,8 +55,8 @@
/// Initializes a [Buffer] from a slice of items.
pub fn from_slice_ref<U: ArrowNativeType, T: AsRef<[U]>>(items: &T) -> Self {
let slice = items.as_ref();
- let len = slice.len();
- let mut buffer = MutableBuffer::with_capacity(len);
+ let capacity = slice.len() * std::mem::size_of::<U>();
+ let mut buffer = MutableBuffer::with_capacity(capacity);
buffer.extend_from_slice(slice);
buffer.into()
}