tvg format: fix broken encoding/decoding.

a regression bug was introduced by 52a7a257b2
in size calculation of data in case of uncompressed version.

@Issue: https://github.com/Samsung/thorvg/issues/739
This commit is contained in:
Hermet Park 2021-08-25 21:41:02 +09:00 committed by Hermet Park
parent 3d80f0a9e9
commit d599f744c8
2 changed files with 7 additions and 5 deletions

View file

@ -210,12 +210,12 @@ void TvgLoader::run(unsigned tid)
if (compressed) {
data = (char*) lzwDecode((uint8_t*) data, compressedSize, compressedSizeBits, uncompressedSize);
root = interpreter->run(data, data + uncompressedSize);
delete(data);
} else {
root = interpreter->run(data, this->data + size);
}
root = interpreter->run(data, data + uncompressedSize);
if (compressed) delete(data);
if (!root) clear();
}

View file

@ -227,9 +227,11 @@ bool TvgSaver::writeHeader()
//3. View Size
writeData(vsize, SIZE(vsize));
ptr += SIZE(vsize);
//4. Reserved data + Compress size
buffer.count += TVG_HEADER_RESERVED_LENGTH + TVG_HEADER_COMPRESS_SIZE;
memset(ptr, 0x00, TVG_HEADER_RESERVED_LENGTH + TVG_HEADER_COMPRESS_SIZE);
buffer.count += (TVG_HEADER_RESERVED_LENGTH + TVG_HEADER_COMPRESS_SIZE);
return true;
}