feat(rust): export compression bound from Rust
Move the context-free public ZSTD_compressBound ABI into Rust while leaving the stateful compressor context in C. The Rust implementation preserves the size-width-specific input limit, macro arithmetic, and srcSize_wrong error contract used by C callers. Test Plan: - cargo clippy - cargo clippy --benches - cargo clippy --tests - cargo +nightly fmt - cargo test zstd_compress_api::tests -- --nocapture - cargo test --target i686-unknown-linux-gnu zstd_compress_api::tests - make -B -C lib -j2 libzstd.a - fuzzer -s5346 -i1 --no-big-tests Refs: public ZSTD_COMPRESSBOUND macro in lib/zstd.h
This commit is contained in:
@@ -59,19 +59,9 @@
|
||||
/*-*************************************
|
||||
* Helper functions
|
||||
***************************************/
|
||||
/* ZSTD_compressBound()
|
||||
* Note that the result from this function is only valid for
|
||||
* the one-pass compression functions.
|
||||
* When employing the streaming mode,
|
||||
* if flushes are frequently altering the size of blocks,
|
||||
* the overhead from block headers can make the compressed data larger
|
||||
* than the return value of ZSTD_compressBound().
|
||||
*/
|
||||
size_t ZSTD_compressBound(size_t srcSize) {
|
||||
size_t const r = ZSTD_COMPRESSBOUND(srcSize);
|
||||
if (r==0) return ERROR(srcSize_wrong);
|
||||
return r;
|
||||
}
|
||||
/* ZSTD_compressBound() lives in rust/src/zstd_compress_api.rs. Keep this
|
||||
* translation unit for the context implementation, which still calls the
|
||||
* exported ABI symbol. */
|
||||
|
||||
|
||||
/*-*************************************
|
||||
|
||||
Reference in New Issue
Block a user