From dd93ba7ec443bd22d05c33f3aed5d538a6505d0c Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Fri, 11 Feb 2022 13:29:30 +0100 Subject: [PATCH] Further attempts at fixing segfault in locks --- angelscript/source/as_criticalsection.h | 4 ++-- angelscript/source/as_thread.cpp | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/angelscript/source/as_criticalsection.h b/angelscript/source/as_criticalsection.h index b05c224..7915e46 100644 --- a/angelscript/source/as_criticalsection.h +++ b/angelscript/source/as_criticalsection.h @@ -198,7 +198,7 @@ public: bool TryEnter(); protected: - std::unique_ptr _mutex; + std::mutex* _mutex; }; class asCThreadReadWriteLock @@ -215,7 +215,7 @@ public: void ReleaseShared(); bool TryAcquireShared(); protected: - std::unique_ptr _mutex; + std::shared_mutex* _mutex; }; #endif diff --git a/angelscript/source/as_thread.cpp b/angelscript/source/as_thread.cpp index 83f7e22..25066d3 100644 --- a/angelscript/source/as_thread.cpp +++ b/angelscript/source/as_thread.cpp @@ -350,7 +350,7 @@ asCThreadCriticalSection::asCThreadCriticalSection() InitializeCriticalSection(&cs); #endif #elif defined AS_STD_THREADS - _mutex = std::make_unique(); + _mutex = new std::mutex(); #endif } @@ -360,6 +360,8 @@ asCThreadCriticalSection::~asCThreadCriticalSection() pthread_mutex_destroy(&cs); #elif defined AS_WINDOWS_THREADS DeleteCriticalSection(&cs); +#elif defined AS_STD_THREADS + delete _mutex; #endif } @@ -417,7 +419,7 @@ asCThreadReadWriteLock::asCThreadReadWriteLock() InitializeCriticalSection(&writeLock); #endif #elif defined AS_STD_THREADS - _mutex = std::make_unique(); + _mutex = new std::shared_mutex(); #endif } @@ -428,6 +430,8 @@ asCThreadReadWriteLock::~asCThreadReadWriteLock() #elif defined AS_WINDOWS_THREADS DeleteCriticalSection(&writeLock); CloseHandle(readLocks); +#elif defined AS_STD_THREADS + delete _mutex; #endif }