diff --git a/src/enc.cc b/src/enc.cc index 76edd54..983dad8 100644 --- a/src/enc.cc +++ b/src/enc.cc @@ -16,10 +16,13 @@ // // Author: Skal (pascal.massimino@gmail.com) +#include #include #include #include // for FLT_MAX #include + +#include // NOLINT #include #define SJPEG_NEED_ASM_HEADERS @@ -256,12 +259,17 @@ void (*Encoder::fDCT_)(int16_t* in, int num_blocks) = nullptr; Encoder::StoreHistoFunc Encoder::store_histo_ = nullptr; void Encoder::InitializeStaticPointers() { - if (fDCT_ == nullptr) { + static std::once_flag once; + std::call_once(once, []() { store_histo_ = GetStoreHistoFunc(); quantize_block_ = GetQuantizeBlockFunc(); quantize_error_ = GetQuantizeErrorFunc(); fDCT_ = GetFdct(); - } + }); + assert(store_histo_ != nullptr); + assert(quantize_block_ != nullptr); + assert(quantize_error_ != nullptr); + assert(fDCT_ != nullptr); } ////////////////////////////////////////////////////////////////////////////////