Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi Takeru,
Thanks for making the
libflate
library and maintaining it for 5.5 years.I am building a modular HTTP server library. The library has
forbid(unsafe_code)
. I carefully choose the dependencies of the library. I try to minimize the amount ofunsafe
code in dependencies.I would like to use
libflate
in my library. I noticed thatlibflate
contains a single use ofunsafe
. It calls unsafestd::ffi::CString::from_vec_unchecked
to convert filenames and comments fromVec<u8>
toCString
:libflate/src/gzip.rs
Line 436 in 9bf47f8
Can we please change it to use safe
std::ffi::CString::new
?The
new
method iterates over the bytes and checks that there is no 0. Since the code just iterated over the bytes, they will be in the processor's cache. Therefore, I expect that the performance difference between usingfrom_vec_unchecked
and usingnew
is unmeasurably small.The compiler's guarantee that
libflate
cannot generate undefined behavior is extremely valuable to me. I hope you will agree to this change.Sincerely,
Michael