summaryrefslogtreecommitdiffstats
path: root/Source/ThirdParty/woff2/src/woff2_decompress.cc
diff options
context:
space:
mode:
Diffstat (limited to 'Source/ThirdParty/woff2/src/woff2_decompress.cc')
-rw-r--r--Source/ThirdParty/woff2/src/woff2_decompress.cc30
1 files changed, 12 insertions, 18 deletions
diff --git a/Source/ThirdParty/woff2/src/woff2_decompress.cc b/Source/ThirdParty/woff2/src/woff2_decompress.cc
index 7668c4e82..f29c797cb 100644
--- a/Source/ThirdParty/woff2/src/woff2_decompress.cc
+++ b/Source/ThirdParty/woff2/src/woff2_decompress.cc
@@ -17,10 +17,10 @@
#include <string>
-
-#include "file.h"
+#include "./file.h"
#include "./woff2_dec.h"
+
int main(int argc, char **argv) {
using std::string;
@@ -31,24 +31,18 @@ int main(int argc, char **argv) {
string filename(argv[1]);
string outfilename = filename.substr(0, filename.find_last_of(".")) + ".ttf";
- fprintf(stdout, "Processing %s => %s\n",
- filename.c_str(), outfilename.c_str());
+
string input = woff2::GetFileContent(filename);
+ const uint8_t* raw_input = reinterpret_cast<const uint8_t*>(input.data());
+ string output(std::min(woff2::ComputeWOFF2FinalSize(raw_input, input.size()),
+ woff2::kDefaultMaxSize), 0);
+ woff2::WOFF2StringOut out(&output);
- size_t decompressed_size = woff2::ComputeWOFF2FinalSize(
- reinterpret_cast<const uint8_t*>(input.data()), input.size());
- string output(decompressed_size, 0);
- const bool ok = woff2::ConvertWOFF2ToTTF(
- reinterpret_cast<uint8_t*>(&output[0]), decompressed_size,
- reinterpret_cast<const uint8_t*>(input.data()), input.size());
+ const bool ok = woff2::ConvertWOFF2ToTTF(raw_input, input.size(), &out);
- if (!ok) {
- fprintf(stderr, "Decompression failed\n");
- return 1;
+ if (ok) {
+ woff2::SetFileContents(outfilename, output.begin(),
+ output.begin() + out.Size());
}
-
- woff2::SetFileContents(outfilename, output);
-
- return 0;
+ return ok ? 0 : 1;
}
-