From a2bc1d8572c62442b8a26bb15ee5e6db9bf61850 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Mon, 29 Mar 2021 10:41:34 +0200 Subject: [PATCH] QGCLZMA: init crc table only once --- src/Compression/QGCLZMA.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Compression/QGCLZMA.cc b/src/Compression/QGCLZMA.cc index 7ac69a4..d7e08b7 100644 --- a/src/Compression/QGCLZMA.cc +++ b/src/Compression/QGCLZMA.cc @@ -13,8 +13,13 @@ #include #include +#include + #include "xz.h" + +static std::once_flag crc_init; + bool QGCLZMA::inflateLZMAFile(const QString& lzmaFilename, const QString& decompressedFilename) { QFile inputFile(lzmaFilename); @@ -30,9 +35,10 @@ bool QGCLZMA::inflateLZMAFile(const QString& lzmaFilename, const QString& decomp } - // TODO: call once during startup - xz_crc32_init(); - xz_crc64_init(); + std::call_once(crc_init, []() { + xz_crc32_init(); + xz_crc64_init(); + }); xz_dec *s = xz_dec_init(XZ_DYNALLOC, (uint32_t)-1);