diff --git a/libcelt/entenc.c b/libcelt/entenc.c index 0b4b229f38752ef861c6d74a06adf90e1622a6ec..bff2d8992338df80b855eed58f812bbbb8c4c520 100644 --- a/libcelt/entenc.c +++ b/libcelt/entenc.c @@ -195,6 +195,7 @@ void ec_enc_bits(ec_enc *_this,opus_uint32 _fl,unsigned _bits){ int used; window=_this->end_window; used=_this->nend_bits; + celt_assert(_bits>0); if(used+_bits>EC_WINDOW_SIZE){ do{ _this->error|=ec_write_byte_at_end(_this,(unsigned)window&EC_SYM_MAX); diff --git a/libcelt/entenc.h b/libcelt/entenc.h index 847f77c8530a32249e4912389f1a4d129bce05f8..d65d734ce528b6612c7f9ce04566a35c2ecce921 100644 --- a/libcelt/entenc.h +++ b/libcelt/entenc.h @@ -73,7 +73,7 @@ void ec_enc_uint(ec_enc *_this,opus_uint32 _fl,opus_uint32 _ft); /*Encodes a sequence of raw bits in the stream. _fl: The bits to encode. _ftb: The number of bits to encode. - This must be between 0 and 25, inclusive.*/ + This must be between 1 and 25, inclusive.*/ void ec_enc_bits(ec_enc *_this,opus_uint32 _fl,unsigned _ftb); /*Overwrites a few bits at the very start of an existing stream, after they diff --git a/libcelt/tests/ectest.c b/libcelt/tests/ectest.c index 7daab33e8ee36163e50abc5f796023a9016564b0..2d7551f4f4526226a144634e95ea916ab245320a 100644 --- a/libcelt/tests/ectest.c +++ b/libcelt/tests/ectest.c @@ -55,7 +55,7 @@ int main(int _argc,char **_argv){ } } /*Testing encoding of raw bit values.*/ - for(ftb=0;ftb<16;ftb++){ + for(ftb=1;ftb<16;ftb++){ for(i=0;i<(1<<ftb);i++){ entropy+=ftb; nbits=ec_tell(&enc); @@ -84,7 +84,7 @@ int main(int _argc,char **_argv){ } } } - for(ftb=0;ftb<16;ftb++){ + for(ftb=1;ftb<16;ftb++){ for(i=0;i<(1<<ftb);i++){ sym=ec_dec_bits(&dec,ftb); if(sym!=(unsigned)i){