diff options
author | Daniel Baumann <mail@daniel-baumann.ch> | 2015-11-07 11:43:15 +0000 |
---|---|---|
committer | Daniel Baumann <mail@daniel-baumann.ch> | 2015-11-07 11:43:15 +0000 |
commit | affb7986cd388facf63f26a5dd7bd680b866bdf8 (patch) | |
tree | 86080ad96b070d413e931908ad1f82ca9348fbc8 /decoder.cc | |
parent | Adding upstream version 1.15~rc1. (diff) | |
download | lziprecover-affb7986cd388facf63f26a5dd7bd680b866bdf8.tar.xz lziprecover-affb7986cd388facf63f26a5dd7bd680b866bdf8.zip |
Adding upstream version 1.15.upstream/1.15
Signed-off-by: Daniel Baumann <mail@daniel-baumann.ch>
Diffstat (limited to '')
-rw-r--r-- | decoder.cc | 16 |
1 files changed, 8 insertions, 8 deletions
@@ -202,7 +202,7 @@ int LZ_decoder::decode_member( const Pretty_print & pp ) Bit_model bm_rep1[State::states]; Bit_model bm_rep2[State::states]; Bit_model bm_len[State::states][pos_states]; - Bit_model bm_dis_slot[max_dis_states][1<<dis_slot_bits]; + Bit_model bm_dis_slot[dis_states][1<<dis_slot_bits]; Bit_model bm_dis[modeled_distances-end_dis_model]; Bit_model bm_align[dis_align_size]; Len_model match_len_model; @@ -237,12 +237,7 @@ int LZ_decoder::decode_member( const Pretty_print & pp ) int len; if( rdec.decode_bit( bm_rep[state()] ) == 1 ) // 2nd bit { - if( rdec.decode_bit( bm_rep0[state()] ) == 0 ) // 3rd bit - { - if( rdec.decode_bit( bm_len[state()][pos_state] ) == 0 ) // 4th bit - { state.set_short_rep(); put_byte( get_byte( rep0 ) ); continue; } - } - else + if( rdec.decode_bit( bm_rep0[state()] ) == 1 ) // 3rd bit { unsigned distance; if( rdec.decode_bit( bm_rep1[state()] ) == 0 ) // 4th bit @@ -258,8 +253,13 @@ int LZ_decoder::decode_member( const Pretty_print & pp ) rep1 = rep0; rep0 = distance; } - len = min_match_len + rdec.decode_len( rep_len_model, pos_state ); + else + { + if( rdec.decode_bit( bm_len[state()][pos_state] ) == 0 ) // 4th bit + { state.set_short_rep(); put_byte( get_byte( rep0 ) ); continue; } + } state.set_rep(); + len = min_match_len + rdec.decode_len( rep_len_model, pos_state ); } else { |