From 05059e5a48333e594e0204894cbbdffe51305487 Mon Sep 17 00:00:00 2001 From: elasota <1137273+elasota@users.noreply.github.com> Date: Wed, 8 Nov 2023 23:46:37 -0500 Subject: [PATCH] Clarify that there must be at least 2 weights, i.e. encoding all weights as 0 is invalid --- doc/zstd_compression_format.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/zstd_compression_format.md b/doc/zstd_compression_format.md index dbf409eac88..4a8d338b7a6 100644 --- a/doc/zstd_compression_format.md +++ b/doc/zstd_compression_format.md @@ -1252,7 +1252,9 @@ Number_of_Bits = Weight ? (Max_Number_of_Bits + 1 - Weight) : 0 ``` When a literal value is not present, it receives a `Weight` of 0. The least frequent symbol receives a `Weight` of 1. -If no symbol has a `Weight` of 1, then the data is considered corrupted. +If no literal has a `Weight` of 1, then the data is considered corrupted. +If there are not at least two literals with non-zero `Weight`, then the data +is considered corrupted. The most frequent symbol receives a `Weight` anywhere between 1 and 11 (max). The last symbol's `Weight` is deduced from previously retrieved Weights, by completing to the nearest power of 2. It's necessarily non 0.