From 25373ad294398b752ad0ef4a52a5585a0b957f0b Mon Sep 17 00:00:00 2001 From: sfan5 Date: Thu, 3 Feb 2022 21:35:08 +0100 Subject: Remove awful Mingw32 workarounds Instead a warning is triggered if an affected compiler is detected. closes #12022 --- src/serialization.cpp | 28 ++-------------------------- 1 file changed, 2 insertions(+), 26 deletions(-) (limited to 'src/serialization.cpp') diff --git a/src/serialization.cpp b/src/serialization.cpp index d4d7b5f6e..d3009bc83 100644 --- a/src/serialization.cpp +++ b/src/serialization.cpp @@ -208,30 +208,11 @@ struct ZSTD_Deleter { } }; -#if defined(__MINGW32__) && !defined(__MINGW64__) -/* - * This is exactly as dumb as it looks. - * Yes, this is a memory leak. No, we don't have better solution right now. - */ -template class leaky_ptr -{ - T *value; -public: - leaky_ptr(T *value) : value(value) {}; - T *get() { return value; } -}; -#endif - void compressZstd(const u8 *data, size_t data_size, std::ostream &os, int level) { -#if defined(__MINGW32__) && !defined(__MINGW64__) - // leaks one context per thread but doesn't crash :shrug: - thread_local leaky_ptr stream(ZSTD_createCStream()); -#else // reusing the context is recommended for performance - // it will destroyed when the thread ends + // it will be destroyed when the thread ends thread_local std::unique_ptr stream(ZSTD_createCStream()); -#endif ZSTD_initCStream(stream.get(), level); @@ -276,14 +257,9 @@ void compressZstd(const std::string &data, std::ostream &os, int level) void decompressZstd(std::istream &is, std::ostream &os) { -#if defined(__MINGW32__) && !defined(__MINGW64__) - // leaks one context per thread but doesn't crash :shrug: - thread_local leaky_ptr stream(ZSTD_createDStream()); -#else // reusing the context is recommended for performance - // it will destroyed when the thread ends + // it will be destroyed when the thread ends thread_local std::unique_ptr stream(ZSTD_createDStream()); -#endif ZSTD_initDStream(stream.get()); -- cgit v1.2.3