-
Notifications
You must be signed in to change notification settings - Fork 265
Description
Thank you for creating such a wonderful library.
I noticed that RubyXL::Parser.parse_buffer implicitly changes the buffer received as an argument.
But considering the name #parse_buffer, I don't think the passed argument buffer should be modifed.
Below is the minimal example.
buffer has been modified and increased in size.
$ gem list | grep rubyXL
rubyXL (3.4.26)
$ irb
irb(main):001> require 'rubyXL'
irb(main):002> buffer = File.read("./sample.xlsx")
irb(main):003> buffer.size
=> 213663
irb(main):004> RubyXL::Parser.parse_buffer(buffer)
irb(main):005> buffer.size
=> 272845 # buffer size changed !The cause was that when Zip::File.open_buffer was called with block, the supplied argument buffer was changed.
https://github.com/rubyzip/rubyzip/blob/73c8e110ed1dbcff08ffa48bb1b094abd0348502/lib/zip/file.rb#L122
I think we can fix this problem by not using block.
→ I also created a PR. #454
It's a minor problem, but I get it sometimes, so I think it would be nice if it could be fixed.
In my case, I discovered this problem because when I attached the parsed Excel file to an email, the Excel file was corrupted.