mirror of
https://github.com/claunia/cuetools.net.git
synced 2025-12-16 18:14:25 +00:00
CUETools.Flake: add an overflow safeguard when encoding hires files
This commit is contained in:
@@ -280,11 +280,11 @@ namespace CUETools.Codecs
|
|||||||
fixed (ushort *crc16_t = Crc16.table)
|
fixed (ushort *crc16_t = Crc16.table)
|
||||||
for (int i = count; i > 0; i--)
|
for (int i = count; i > 0; i--)
|
||||||
{
|
{
|
||||||
int v = *(residual++);
|
int vi = *(residual++);
|
||||||
v = (v << 1) ^ (v >> 31);
|
uint v = (uint)((vi << 1) ^ (vi >> 31));
|
||||||
|
|
||||||
// write quotient in unary
|
// write quotient in unary
|
||||||
int q = (v >> k) + 1;
|
int q = (int)(v >> k) + 1;
|
||||||
int bits = k + q;
|
int bits = k + q;
|
||||||
while (bits > 64)
|
while (bits > 64)
|
||||||
{
|
{
|
||||||
@@ -303,7 +303,7 @@ namespace CUETools.Codecs
|
|||||||
|
|
||||||
// write remainder in binary using 'k' bits
|
// write remainder in binary using 'k' bits
|
||||||
//writebits_fast(k + q, (uint)((v & ((1 << k) - 1)) | (1 << k)), ref buf);
|
//writebits_fast(k + q, (uint)((v & ((1 << k) - 1)) | (1 << k)), ref buf);
|
||||||
ulong val = (uint)((v & ((1 << k) - 1)) | (1 << k));
|
ulong val = (uint)((v & ((1U << k) - 1)) | (1U << k));
|
||||||
if (bits < bit_left)
|
if (bits < bit_left)
|
||||||
{
|
{
|
||||||
bit_left -= bits;
|
bit_left -= bits;
|
||||||
|
|||||||
Reference in New Issue
Block a user