From 4d70ed5b73bdb0021c998bf08cc0efeff82a63c2 Mon Sep 17 00:00:00 2001 From: paulfd Date: Wed, 18 Sep 2019 09:14:03 +0200 Subject: [PATCH] Trying to correct a segfault, some shenanigans with vectors of shared pointers? --- sfizz/FilePool.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sfizz/FilePool.cpp b/sfizz/FilePool.cpp index 41f4e8f4..38034a8d 100644 --- a/sfizz/FilePool.cpp +++ b/sfizz/FilePool.cpp @@ -131,8 +131,8 @@ void sfz::FilePool::loadingThread() noexcept SndfileHandle sndFile(reinterpret_cast(file.c_str())); std::lock_guard guard { fileHandleMutex }; - auto newHandle = fileHandles.emplace_back(readFromFile(sndFile, fileToLoad.numFrames)); - fileToLoad.voice->setFileData(newHandle, fileToLoad.ticket); + fileHandles.emplace_back(readFromFile(sndFile, fileToLoad.numFrames)); + fileToLoad.voice->setFileData(fileHandles.back(), fileToLoad.ticket); } } @@ -141,7 +141,6 @@ void sfz::FilePool::garbageThread() noexcept while (!quitThread) { for (auto handle = fileHandles.begin(); handle < fileHandles.end();) { if (handle->use_count() == 1) { - handle->reset(); std::lock_guard guard { fileHandleMutex }; std::iter_swap(handle, fileHandles.end() - 1); fileHandles.pop_back();