diff --git a/src/BulletMultiThreaded/PosixThreadSupport.cpp b/src/BulletMultiThreaded/PosixThreadSupport.cpp index c8b49ee3f..55b3ffa91 100644 --- a/src/BulletMultiThreaded/PosixThreadSupport.cpp +++ b/src/BulletMultiThreaded/PosixThreadSupport.cpp @@ -248,6 +248,9 @@ void PosixThreadSupport::stopSPU() destroySem(spuStatus.startSemaphore); printf("semaphore destroyed\n"); checkPThreadFunction(pthread_join(spuStatus.thread,0)); + + if(spuStatus.m_lsMemory) + delete spuStatus.m_lsMemory; } printf("destroy main semaphore\n"); destroySem(mainSemaphore); diff --git a/src/BulletMultiThreaded/Win32ThreadSupport.cpp b/src/BulletMultiThreaded/Win32ThreadSupport.cpp index 1197bbe0f..2b8cc11d8 100644 --- a/src/BulletMultiThreaded/Win32ThreadSupport.cpp +++ b/src/BulletMultiThreaded/Win32ThreadSupport.cpp @@ -299,6 +299,9 @@ void Win32ThreadSupport::stopSPU() CloseHandle(spuStatus.m_eventCompletetHandle); CloseHandle(spuStatus.m_eventStartHandle); CloseHandle(spuStatus.m_threadHandle); + + if(spuStatus.m_lsMemory) + delete spuStatus.m_lsMemory; } m_activeSpuStatus.clear(); diff --git a/src/BulletMultiThreaded/btParallelConstraintSolver.cpp b/src/BulletMultiThreaded/btParallelConstraintSolver.cpp index 2e400de1b..e86af64c5 100644 --- a/src/BulletMultiThreaded/btParallelConstraintSolver.cpp +++ b/src/BulletMultiThreaded/btParallelConstraintSolver.cpp @@ -1157,6 +1157,8 @@ btParallelConstraintSolver::~btParallelConstraintSolver() { delete m_memoryCache; delete m_solverIO; + delete m_barrier; + delete m_criticalSection; }