diff --git a/src/coders/rle.cpp b/src/coders/rle.cpp index f049492e..e99006e5 100644 --- a/src/coders/rle.cpp +++ b/src/coders/rle.cpp @@ -158,7 +158,7 @@ size_t extrle::encode16(const ubyte* src8, size_t srclen, ubyte* dst) { uint16_t c = src[0]; for (size_t i = 1; i < srclen/2; i++) { uint16_t cnext = src[i]; - if (cnext != c || counter == max_sequence) { + if (cnext != c || counter == max_sequence16) { if (counter >= 0x40) { dst[offset++] = 0x80 | ((c > 255) << 6) | (counter & 0x3F); dst[offset++] = counter >> 6; diff --git a/test/coders/rle.cpp b/test/coders/rle.cpp index 3790fdb1..e393f8dd 100644 --- a/test/coders/rle.cpp +++ b/test/coders/rle.cpp @@ -5,14 +5,15 @@ static void test_encode_decode( size_t(*encodefunc)(const ubyte*, size_t, ubyte*), - size_t(*decodefunc)(const ubyte*, size_t, ubyte*) + size_t(*decodefunc)(const ubyte*, size_t, ubyte*), + int dencity ) { const size_t initial_size = 50'000; uint8_t initial[initial_size]; uint8_t next = rand(); for (size_t i = 0; i < initial_size; i++) { initial[i] = next; - if (rand() % 13 == 0) { + if (rand() % dencity == 0) { next = rand(); } } @@ -29,17 +30,21 @@ static void test_encode_decode( } TEST(RLE, EncodeDecode) { - test_encode_decode(rle::encode, rle::decode); + test_encode_decode(rle::encode, rle::decode, 13); + test_encode_decode(rle::encode, rle::decode, 90123); } TEST(RLE16, EncodeDecode) { - test_encode_decode(rle::encode16, rle::decode16); + test_encode_decode(rle::encode16, rle::decode16, 13); + test_encode_decode(rle::encode16, rle::decode16, 90123); } TEST(ExtRLE, EncodeDecode) { - test_encode_decode(extrle::encode, extrle::decode); + test_encode_decode(extrle::encode, extrle::decode, 13); + test_encode_decode(extrle::encode, extrle::decode, 90123); } TEST(ExtRLE16, EncodeDecode) { - test_encode_decode(extrle::encode16, extrle::decode16); + test_encode_decode(extrle::encode16, extrle::decode16, 13); + test_encode_decode(extrle::encode16, extrle::decode16, 90123); }