ctsk commented on code in PR #8594:
URL: https://github.com/apache/arrow-rs/pull/8594#discussion_r2428009035


##########
arrow-array/src/builder/generic_bytes_view_builder.rs:
##########
@@ -356,17 +371,41 @@ impl<T: ByteViewType + ?Sized> GenericByteViewBuilder<T> {
             let to_reserve = v.len().max(self.block_size.next_size() as usize);
             self.in_progress.reserve(to_reserve);
         };
-        let offset = self.in_progress.len() as u32;
+        let offset: u32 = self.in_progress.len().try_into().map_err(|_| {
+            ArrowError::InvalidArgumentError(format!(
+                "In-progress buffer length {} exceeds u32::MAX",
+                self.in_progress.len()
+            ))
+        })?;
         self.in_progress.extend_from_slice(v);
 
+        let prefix = v
+            .get(0..4)
+            .and_then(|slice| slice.try_into().ok())
+            .map(u32::from_le_bytes)
+            .ok_or_else(|| {
+                ArrowError::InvalidArgumentError(
+                    "String must be at least 4 bytes for non-inline 
view".to_string(),

Review Comment:
   This error is unreachable as we checked that the value is longer than 
MAX_INLINE_VIEW_LEN (12 bytes) above.



##########
arrow-array/src/builder/generic_bytes_view_builder.rs:
##########
@@ -356,17 +371,41 @@ impl<T: ByteViewType + ?Sized> GenericByteViewBuilder<T> {
             let to_reserve = v.len().max(self.block_size.next_size() as usize);
             self.in_progress.reserve(to_reserve);
         };
-        let offset = self.in_progress.len() as u32;
+        let offset: u32 = self.in_progress.len().try_into().map_err(|_| {
+            ArrowError::InvalidArgumentError(format!(
+                "In-progress buffer length {} exceeds u32::MAX",

Review Comment:
   1) I think the method can recover by starting a new in-progress buffer 
instead of returning an error here.
   
   2) I am unsure if this error is even reachable.



-- 
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.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to