diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index ccf843280..6b1650b41 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -106,6 +106,7 @@ size_t ZSTD_rust_params_resolveMaxBlockSize(size_t maxBlockSize); size_t ZSTD_rust_params_getBlockSize(size_t maxBlockSize, U32 windowLog); void ZSTD_rust_params_overrideCParams(ZSTD_compressionParameters* cParams, const ZSTD_compressionParameters* overrides); +int ZSTD_rust_params_resolveExternalSequenceValidation(int mode); int ZSTD_rust_params_rowMatchFinderSupported(int strategy); int ZSTD_rust_params_rowMatchFinderUsed(int strategy, int mode); int ZSTD_rust_params_resolveRowMatchFinderMode( @@ -605,7 +606,7 @@ static ZSTD_ParamSwitch_e ZSTD_resolveEnableLdm(ZSTD_ParamSwitch_e mode, } static int ZSTD_resolveExternalSequenceValidation(int mode) { - return mode; + return ZSTD_rust_params_resolveExternalSequenceValidation(mode); } /* Resolves maxBlockSize to the default if no value is present. */ diff --git a/rust/src/zstd_compress_params.rs b/rust/src/zstd_compress_params.rs index 3e6ec9f7b..422c467cc 100644 --- a/rust/src/zstd_compress_params.rs +++ b/rust/src/zstd_compress_params.rs @@ -415,6 +415,17 @@ pub extern "C" fn ZSTD_rust_params_resolveExternalRepcodeSearch( resolve_external_repcode_search(mode, compression_level) } +#[inline] +fn resolve_external_sequence_validation(mode: c_int) -> c_int { + mode +} + +/// C ABI for `ZSTD_resolveExternalSequenceValidation()`. +#[no_mangle] +pub extern "C" fn ZSTD_rust_params_resolveExternalSequenceValidation(mode: c_int) -> c_int { + resolve_external_sequence_validation(mode) +} + #[inline] fn cdict_indices_are_tagged(cparams: ZSTD_compressionParameters) -> bool { cparams.strategy == ZSTD_FAST || cparams.strategy == ZSTD_DFAST @@ -1213,6 +1224,16 @@ mod tests { ); } + #[test] + fn external_sequence_validation_preserves_its_int_mode() { + for mode in [c_int::MIN, -1, 0, 1, c_int::MAX] { + assert_eq!( + ZSTD_rust_params_resolveExternalSequenceValidation(mode), + mode + ); + } + } + #[test] fn level_tables_match_representative_clevels_entries() { let large = select_cparams(3, ZSTD_CONTENTSIZE_UNKNOWN, 0, ZSTD_RUST_CPM_UNKNOWN);