summaryrefslogtreecommitdiffstats
path: root/encoder_base.c
diff options
context:
space:
mode:
Diffstat (limited to 'encoder_base.c')
-rw-r--r--encoder_base.c21
1 files changed, 8 insertions, 13 deletions
diff --git a/encoder_base.c b/encoder_base.c
index 7dd7eca..91c4623 100644
--- a/encoder_base.c
+++ b/encoder_base.c
@@ -1,5 +1,5 @@
/* Clzip - LZMA lossless data compressor
- Copyright (C) 2010-2021 Antonio Diaz Diaz.
+ Copyright (C) 2010-2022 Antonio Diaz Diaz.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -40,8 +40,7 @@ bool Mb_read_block( struct Matchfinder_base * const mb )
mb->stream_pos += rd;
if( rd != size && errno )
{ show_error( "Read error", errno, false ); cleanup_and_fail( 1 ); }
- if( rd < size )
- { mb->at_stream_end = true; mb->pos_limit = mb->buffer_size; }
+ if( rd < size ) { mb->at_stream_end = true; mb->pos_limit = mb->buffer_size; }
}
return mb->pos < mb->stream_pos;
}
@@ -77,7 +76,6 @@ bool Mb_init( struct Matchfinder_base * const mb, const int before_size,
{
const int buffer_size_limit =
( dict_factor * dict_size ) + before_size + after_size;
- unsigned size;
int i;
mb->partial_data_pos = 0;
@@ -107,9 +105,8 @@ bool Mb_init( struct Matchfinder_base * const mb, const int before_size,
mb->dictionary_size = dict_size;
mb->pos_limit = mb->buffer_size;
if( !mb->at_stream_end ) mb->pos_limit -= after_size;
- size = 1 << max( 16, real_bits( mb->dictionary_size - 1 ) - 2 );
- if( mb->dictionary_size > 1 << 26 ) /* 64 MiB */
- size >>= 1;
+ unsigned size = 1 << max( 16, real_bits( mb->dictionary_size - 1 ) - 2 );
+ if( mb->dictionary_size > 1 << 26 ) size >>= 1; /* 64 MiB */
mb->key4_mask = size - 1; /* increases with dictionary size */
size += num_prev_positions23;
mb->num_prev_positions = size;
@@ -138,11 +135,9 @@ void Mb_reset( struct Matchfinder_base * const mb )
Mb_read_block( mb );
if( mb->at_stream_end && mb->stream_pos < mb->dictionary_size )
{
- int size;
mb->dictionary_size = max( min_dictionary_size, mb->stream_pos );
- size = 1 << max( 16, real_bits( mb->dictionary_size - 1 ) - 2 );
- if( mb->dictionary_size > 1 << 26 ) /* 64 MiB */
- size >>= 1;
+ int size = 1 << max( 16, real_bits( mb->dictionary_size - 1 ) - 2 );
+ if( mb->dictionary_size > 1 << 26 ) size >>= 1; /* 64 MiB */
mb->key4_mask = size - 1;
size += mb->num_prev_positions23;
mb->num_prev_positions = size;
@@ -169,16 +164,16 @@ void Re_flush_data( struct Range_encoder * const renc )
/* End Of Stream marker => (dis == 0xFFFFFFFFU, len == min_match_len) */
void LZeb_full_flush( struct LZ_encoder_base * const eb, const State state )
{
- int i;
const int pos_state = Mb_data_position( &eb->mb ) & pos_state_mask;
- Lzip_trailer trailer;
Re_encode_bit( &eb->renc, &eb->bm_match[state][pos_state], 1 );
Re_encode_bit( &eb->renc, &eb->bm_rep[state], 0 );
LZeb_encode_pair( eb, 0xFFFFFFFFU, min_match_len, pos_state );
Re_flush( &eb->renc );
+ Lzip_trailer trailer;
Lt_set_data_crc( trailer, LZeb_crc( eb ) );
Lt_set_data_size( trailer, Mb_data_position( &eb->mb ) );
Lt_set_member_size( trailer, Re_member_position( &eb->renc ) + Lt_size );
+ int i;
for( i = 0; i < Lt_size; ++i )
Re_put_byte( &eb->renc, trailer[i] );
Re_flush_data( &eb->renc );