diff --git a/gfx/ots/src/glat.cc b/gfx/ots/src/glat.cc --- a/gfx/ots/src/glat.cc +++ b/gfx/ots/src/glat.cc @@ -4,9 +4,9 @@ #include "glat.h" #include "gloc.h" -#include "lz4.h" +#include "mozilla/Compression.h" #include namespace ots { @@ -212,16 +212,17 @@ bool OpenTypeGLAT_v3::Parse(const uint8_ return DropGraphite("Decompressed size exceeds 30MB: %gMB", decompressed_size / (1024.0 * 1024.0)); } std::vector decompressed(decompressed_size); - int ret = LZ4_decompress_safe_partial( + size_t outputSize = 0; + bool ret = mozilla::Compression::LZ4::decompressPartial( reinterpret_cast(data + table.offset()), - reinterpret_cast(decompressed.data()), table.remaining(), // input buffer size (input size + padding) + reinterpret_cast(decompressed.data()), decompressed.size(), // target output size - decompressed.size()); // output buffer size - if (ret < 0 || unsigned(ret) != decompressed.size()) { - return DropGraphite("Decompression failed with error code %d", ret); + &outputSize); // return output size + if (!ret || outputSize != decompressed.size()) { + return DropGraphite("Decompression failed"); } return this->Parse(decompressed.data(), decompressed.size(), true); } default: diff --git a/gfx/ots/src/silf.cc b/gfx/ots/src/silf.cc --- a/gfx/ots/src/silf.cc +++ b/gfx/ots/src/silf.cc @@ -4,9 +4,9 @@ #include "silf.h" #include "name.h" -#include "lz4.h" +#include "mozilla/Compression.h" #include namespace ots { @@ -50,16 +50,17 @@ bool OpenTypeSILF::Parse(const uint8_t* return DropGraphite("Decompressed size exceeds 30MB: %gMB", decompressed_size / (1024.0 * 1024.0)); } std::vector decompressed(decompressed_size); - int ret = LZ4_decompress_safe_partial( + size_t outputSize = 0; + bool ret = mozilla::Compression::LZ4::decompressPartial( reinterpret_cast(data + table.offset()), - reinterpret_cast(decompressed.data()), table.remaining(), // input buffer size (input size + padding) + reinterpret_cast(decompressed.data()), decompressed.size(), // target output size - decompressed.size()); // output buffer size - if (ret < 0 || unsigned(ret) != decompressed.size()) { - return DropGraphite("Decompression failed with error code %d", ret); + &outputSize); // return output size + if (!ret || outputSize != decompressed.size()) { + return DropGraphite("Decompression failed"); } return this->Parse(decompressed.data(), decompressed.size(), true); } default: