deflate.c:602:15: runtime error: shift exponent 32 is too large for 32-bit type 'int32_t' (aka 'int')
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /src/zlib-ng/deflate.c:602:15
/* ========================================================================= */
int32_t ZEXPORT PREFIX(deflatePrime)(PREFIX3(stream) *strm, int32_t bits, int32_t value) {
deflate_state *s;
+ uint64_t value64 = (uint64_t)value;
int32_t put;
if (deflateStateCheck(strm))
if (put > bits)
put = bits;
if (s->bi_valid == 0)
- s->bi_buf = (uint64_t)value;
+ s->bi_buf = value64;
else
- s->bi_buf |= (((uint64_t)value & ((UINT64_C(1) << put) - 1)) << s->bi_valid);
+ s->bi_buf |= (value64 & ((UINT64_C(1) << put) - 1)) << s->bi_valid;
s->bi_valid += put;
zng_tr_flush_bits(s);
- value >>= put;
+ value64 >>= put;
bits -= put;
} while (bits);
return Z_OK;