Cosmetics

This commit is contained in:
Bertrand Songis
2020-08-21 10:25:48 +02:00
parent 1c9e39a69c
commit f6e730a94d
+18 -17
View File
@@ -199,32 +199,33 @@ class RLEBitmap:
free(data);
}
static int decode(uint8_t * dest, unsigned int dest_size, const unsigned char* src)
static int decode(uint8_t * dest, unsigned int destSize, const uint8_t * src)
{
//unsigned char count = 0;
unsigned char prev_byte = 0;
bool prev_byte_valid = false;
uint8_t prevByte = 0;
bool prevByteValid = false;
const unsigned char * dest_end = dest + dest_size;
unsigned char * d = dest;
const uint8_t * destEnd = dest + destSize;
uint8_t * d = dest;
while (d < dest_end) {
*d++ = *src;
if (prev_byte_valid && (*src == prev_byte)) {
src++;
while (d < destEnd) {
uint8_t byte = *src++;
*d++ = byte;
if (d + *src > dest + dest_size) {
// TRACE("rle_decode_8bit: destination overflow!\n");
if (prevByteValid && byte == prevByte) {
uint8_t count = *src++;
if (d + count > destEnd) {
TRACE("rle_decode_8bit: destination overflow!\n");
return -1;
}
memset(d, prev_byte, *src);
d += *src++;
prev_byte_valid = false;
memset(d, byte, count);
d += count;
prevByteValid = false;
}
else {
prev_byte = *src++;
prev_byte_valid = true;
prevByte = byte;
prevByteValid = true;
}
}