]> wimlib.net Git - wimlib/blobdiff - src/lzx-compress.c
A few minor compressor cleanups
[wimlib] / src / lzx-compress.c
index a9745b62c8a74973114e1088a358468d1123d8cc..a972cc35bf3c24722372db9538c3b9a72f21f1c8 100644 (file)
@@ -904,8 +904,7 @@ lzx_get_matches_nocache_multiblock(struct lzx_compressor *c,
  * offset.
  */
 static inline unsigned
  * offset.
  */
 static inline unsigned
-lzx_get_matches(struct lzx_compressor *c,
-               const struct lz_match **matches_ret)
+lzx_get_matches(struct lzx_compressor *c, const struct lz_match **matches_ret)
 {
        return (*c->get_matches_func)(c, matches_ret);
 }
 {
        return (*c->get_matches_func)(c, matches_ret);
 }
@@ -1207,7 +1206,7 @@ lzx_match_cost_raw(unsigned len, unsigned offset_slot,
        unsigned main_symbol;
 
        if (len - LZX_MIN_MATCH_LEN < LZX_NUM_PRIMARY_LENS) {
        unsigned main_symbol;
 
        if (len - LZX_MIN_MATCH_LEN < LZX_NUM_PRIMARY_LENS) {
-               len_header = len - LZX_MIN_MATCH_LEN ;
+               len_header = len - LZX_MIN_MATCH_LEN;
                cost = 0;
        } else {
                len_header = LZX_NUM_PRIMARY_LENS;
                cost = 0;
        } else {
                len_header = LZX_NUM_PRIMARY_LENS;
@@ -1788,6 +1787,8 @@ lzx_choose_lazy_items_for_block(struct lzx_compressor *c,
                         * length 3 match.  Output the previous match if there
                         * is one; otherwise output a literal.  */
 
                         * length 3 match.  Output the previous match if there
                         * is one; otherwise output a literal.  */
 
+               no_match_found:
+
                        if (prev_len) {
                                skip_len = prev_len - 2;
                                goto output_prev_match;
                        if (prev_len) {
                                skip_len = prev_len - 2;
                                goto output_prev_match;
@@ -1825,11 +1826,8 @@ lzx_choose_lazy_items_for_block(struct lzx_compressor *c,
                if (unlikely(cur_len > block_end - (window_ptr - 1))) {
                        /* Nearing end of block.  */
                        cur_len = block_end - (window_ptr - 1);
                if (unlikely(cur_len > block_end - (window_ptr - 1))) {
                        /* Nearing end of block.  */
                        cur_len = block_end - (window_ptr - 1);
-                       if (cur_len < 3) {
-                               lzx_declare_literal(c, *(window_ptr - 1), &next_chosen_item);
-                               prev_len = 0;
-                               continue;
-                       }
+                       if (cur_len < 3)
+                               goto no_match_found;
                }
 
                if (prev_len == 0 || cur_score > prev_score) {
                }
 
                if (prev_len == 0 || cur_score > prev_score) {
@@ -1893,11 +1891,11 @@ static int
 lzx_choose_verbatim_or_aligned(const struct lzx_freqs * freqs,
                               const struct lzx_codes * codes)
 {
 lzx_choose_verbatim_or_aligned(const struct lzx_freqs * freqs,
                               const struct lzx_codes * codes)
 {
-       unsigned aligned_cost = 0;
-       unsigned verbatim_cost = 0;
+       u32 aligned_cost = 0;
+       u32 verbatim_cost = 0;
 
 
-       /* A verbatim block require 3 bits in each place that an aligned symbol
-        * was used.  */
+       /* A verbatim block requires 3 bits in each place that an aligned symbol
+        * would be used in an aligned offset block.  */
        for (unsigned i = 0; i < LZX_ALIGNEDCODE_NUM_SYMBOLS; i++) {
                verbatim_cost += 3 * freqs->aligned[i];
                aligned_cost += codes->lens.aligned[i] * freqs->aligned[i];
        for (unsigned i = 0; i < LZX_ALIGNEDCODE_NUM_SYMBOLS; i++) {
                verbatim_cost += 3 * freqs->aligned[i];
                aligned_cost += codes->lens.aligned[i] * freqs->aligned[i];