]> wimlib.net Git - wimlib/blobdiff - src/decompress.c
make_huffman_decode_table(): Fix comment
[wimlib] / src / decompress.c
index 6d4b41e2285512d33ad21e8a360a0d61931ca198..e97aab5c5c2f72cbf407ccacc65f8a750fb62f01 100644 (file)
@@ -38,7 +38,8 @@
  *                     (2**table_bits) + 2 * num_syms to guarantee
  *                     that there is enough space.
  *
- * @num_syms:          Total number of symbols in the Huffman tree.
+ * @num_syms:          Number of symbols in the alphabet, including symbols
+ *                     that do not appear in this particular input chunk.
  *
  * @table_bits:                Any symbols with a code length of table_bits or less can
  *                     be decoded in one lookup of the table.  2**table_bits
@@ -46,7 +47,7 @@
  *                     any Huffman codes longer than @table_bits.
  *
  * @lens:              An array of length @num_syms, indexable by symbol, that
- *                     gives the length of the Huffman codeward for that
+ *                     gives the length of the Huffman codeword for that
  *                     symbol.  Because the Huffman tree is in canonical form,
  *                     it can be reconstructed by only knowing the length of
  *                     the codeword for each symbol.  It is assumed, but not
@@ -163,17 +164,15 @@ int make_huffman_decode_table(u16 decode_table[],  unsigned num_syms,
                        break;
 
                unsigned num_entries = 1 << (table_bits - codeword_len);
-               if (num_entries >=
-                       (sizeof(unsigned long) / sizeof(decode_table[0])))
-               {
-                       wimlib_assert2(decode_table_pos % 4 == 0);
+               const unsigned entries_per_long = sizeof(unsigned long) /
+                                                 sizeof(decode_table[0]);
+               if (num_entries >= entries_per_long) {
+                       wimlib_assert2(decode_table_pos % entries_per_long == 0);
                        BUILD_BUG_ON(sizeof(unsigned long) != 4 &&
                                     sizeof(unsigned long) != 8);
 
                        unsigned long *p = (unsigned long *)&decode_table[decode_table_pos];
-                       unsigned long n = num_entries /
-                                               (sizeof(unsigned long) /
-                                                       sizeof(decode_table[0]));
+                       unsigned n = num_entries / entries_per_long;
                        unsigned long v = sym;
                        if (sizeof(unsigned long) >= 4)
                                v |= v << 16;