From: elasota <1137273+elasota@users.noreply.github.com> Date: Thu, 9 Nov 2023 04:46:37 +0000 (-0500) Subject: Clarify that there must be at least 2 weights, i.e. encoding all weights as 0 is... X-Git-Tag: v1.5.6^2~95 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=05059e5a48333e594e0204894cbbdffe51305487;p=thirdparty%2Fzstd.git Clarify that there must be at least 2 weights, i.e. encoding all weights as 0 is invalid --- diff --git a/doc/zstd_compression_format.md b/doc/zstd_compression_format.md index dbf409eac..4a8d338b7 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.