Cosmetics
This commit is contained in:
+18
-17
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user