garyanaplan commented on a change in pull request #443:
URL: https://github.com/apache/arrow-rs/pull/443#discussion_r650750468



##########
File path: parquet/src/data_type.rs
##########
@@ -661,8 +661,15 @@ pub(crate) mod private {
             _: &mut W,
             bit_writer: &mut BitWriter,
         ) -> Result<()> {
+            if bit_writer.bytes_written() + values.len() >= 
bit_writer.capacity() {
+                bit_writer.extend(256);
+            }
             for value in values {
-                bit_writer.put_value(*value as u64, 1);
+                if !bit_writer.put_value(*value as u64, 1) {

Review comment:
       I found it hard to think of a good way to test this with the fix in 
place.
   
   I preferred the "don't auto expand memory at the point of failure" approach 
because I'm fairly conservative and didn't want to make a change that was too 
wide in impact without a better understanding of the code. i.e.: my fix 
specifically targeted the error I reported and made it possible to detect in 
other locations.
   
   I think a better fix would be to (somehow) pre-size the vector or avoid 
having to size a vector for all the bytes that could be written, but that would 
be a much bigger scope to the fix.




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


Reply via email to