From 18bf91a08b5032fac9403cb84ab88b30180e0e83 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Fri, 5 Oct 2018 18:23:05 +0300 Subject: [PATCH] core: update allocSingleton implementation, valgrind suppression --- modules/core/include/opencv2/core/private.hpp | 10 +++++++--- modules/core/src/system.cpp | 2 ++ platforms/scripts/valgrind.supp | 7 +++++++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/modules/core/include/opencv2/core/private.hpp b/modules/core/include/opencv2/core/private.hpp index ef09d254ca..869b34d8a7 100644 --- a/modules/core/include/opencv2/core/private.hpp +++ b/modules/core/include/opencv2/core/private.hpp @@ -142,9 +142,13 @@ namespace cv CV_EXPORTS void scalarToRawData(const cv::Scalar& s, void* buf, int type, int unroll_to = 0); //! Allocate all memory buffers which will not be freed, ease filtering memcheck issues -template -T* allocSingleton(size_t count) { return static_cast(fastMalloc(sizeof(T) * count)); } -} +CV_EXPORTS void* allocSingletonBuffer(size_t size); + +//! Allocate all memory buffers which will not be freed, ease filtering memcheck issues +template static inline +T* allocSingleton(size_t count = 1) { return static_cast(allocSingletonBuffer(sizeof(T) * count)); } + +} // namespace #if 1 // TODO: Remove in OpenCV 4.x diff --git a/modules/core/src/system.cpp b/modules/core/src/system.cpp index ac1dc05d2d..eb987f87a2 100644 --- a/modules/core/src/system.cpp +++ b/modules/core/src/system.cpp @@ -70,6 +70,8 @@ static bool param_dumpErrors = utils::getConfigurationParameterBool("OPENCV_DUMP #endif ); +void* allocSingletonBuffer(size_t size) { return fastMalloc(size); } + } // namespace cv #ifndef CV_ERROR_SET_TERMINATE_HANDLER // build config option diff --git a/platforms/scripts/valgrind.supp b/platforms/scripts/valgrind.supp index f61851c591..074c2013c5 100644 --- a/platforms/scripts/valgrind.supp +++ b/platforms/scripts/valgrind.supp @@ -12,6 +12,13 @@ fun:_ZN2cv22getInitializationMutexEv } +{ + OpenCV-SingletonBuffer + Memcheck:Leak + ... + fun:_ZN2cv20allocSingletonBufferEm +} + { OpenCV-getStdAllocator Memcheck:Leak