data_compress() ignores compression_level parameter — always uses zstd default (3) #48

Closed
opened 2026-07-20 17:12:47 +02:00 by TapTap · 0 comments
Owner

Description

In src/shared/compression.c line 10, the data_compress() function casts the compression_level parameter to void:

Data* data_compress(Data* data_to_compress, int compression_level) {
  (void)compression_level;   // <-- parameter silently discarded
  ...
}

This means that regardless of what the user specifies via -c 10 or --archive, the zstd compression context is never configured with ZSTD_CCtx_setParameter() for the compression level. The default zstd level (3) is always used.

Impact

Users requesting lower compression (faster) or higher compression (smaller files) do not get the expected behavior. For example, -c 1 (fastest) and -c 22 (slowest, best ratio) would produce identical results.

Location

src/shared/compression.c:9-43

Suggested Fix

After creating the ZSTD compression context, add:

ZSTD_CCtx_setParameter(cctx, ZSTD_c_compressionLevel, compression_level);

Also consider clamping compression_level to valid range (1–22) and validating it earlier in the CLI parsing.

Severity

Critical

Category

Bug


This issue was automatically generated by the issue-creator agent.

## Description In `src/shared/compression.c` line 10, the `data_compress()` function casts the `compression_level` parameter to void: ```c Data* data_compress(Data* data_to_compress, int compression_level) { (void)compression_level; // <-- parameter silently discarded ... } ``` This means that regardless of what the user specifies via `-c 10` or `--archive`, the zstd compression context is never configured with `ZSTD_CCtx_setParameter()` for the compression level. The default zstd level (3) is always used. ## Impact Users requesting lower compression (faster) or higher compression (smaller files) do not get the expected behavior. For example, `-c 1` (fastest) and `-c 22` (slowest, best ratio) would produce identical results. ## Location `src/shared/compression.c:9-43` ## Suggested Fix After creating the ZSTD compression context, add: ```c ZSTD_CCtx_setParameter(cctx, ZSTD_c_compressionLevel, compression_level); ``` Also consider clamping `compression_level` to valid range (1–22) and validating it earlier in the CLI parsing. ## Severity Critical ## Category Bug --- _This issue was automatically generated by the issue-creator agent._
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: TapTap/FastSync#48