diff --git a/smocore/comparatorLibs/comparatorApiManager.cpp b/smocore/comparatorLibs/comparatorApiManager.cpp index 04bad72..cd8cabc 100644 --- a/smocore/comparatorLibs/comparatorApiManager.cpp +++ b/smocore/comparatorLibs/comparatorApiManager.cpp @@ -108,14 +108,22 @@ void ComparatorApiManager::unloadComparatorLib(const std::string& libraryPath) void ComparatorApiManager::unloadAllComparatorLibs(void) { - auto libs = s.rsrc.libs; + std::vector> + loadedLibrariesTmp; + loadedLibrariesTmp.reserve(s.rsrc.libs.size()); + + for (const auto& lib : s.rsrc.libs) { + loadedLibrariesTmp.push_back(lib->loadedSharedLibrary); + } + s.rsrc.libs.clear(); s.rsrc.typeRegistry.clear(); - for (const auto& lib : libs) - { - loadable_lib::LoadableLibraryManager::getInstance() - .unloadSharedLibrary(lib->loadedSharedLibrary); + loadable_lib::LoadableLibraryManager& llm = + loadable_lib::LoadableLibraryManager::getInstance(); + for (const auto& loadedLibrary : loadedLibrariesTmp) { + llm.unloadSharedLibrary(loadedLibrary); } } diff --git a/smocore/stimBuffApis/stimBuffApiManager.cpp b/smocore/stimBuffApis/stimBuffApiManager.cpp index 5bf5a18..4a7fbcb 100644 --- a/smocore/stimBuffApis/stimBuffApiManager.cpp +++ b/smocore/stimBuffApis/stimBuffApiManager.cpp @@ -224,13 +224,21 @@ void StimBuffApiManager::unloadStimBuffApiLib(const std::string& libraryPath) void StimBuffApiManager::unloadAllStimBuffApiLibs(void) { - auto libs = s.rsrc.libs; + std::vector> + loadedLibrariesTmp; + loadedLibrariesTmp.reserve(s.rsrc.libs.size()); + + for (const auto& lib : s.rsrc.libs) { + loadedLibrariesTmp.push_back(lib->loadedSharedLibrary); + } + s.rsrc.libs.clear(); - for (const auto& lib : libs) - { - loadable_lib::LoadableLibraryManager::getInstance() - .unloadSharedLibrary(lib->loadedSharedLibrary); + loadable_lib::LoadableLibraryManager& llm = + loadable_lib::LoadableLibraryManager::getInstance(); + for (const auto& loadedLibrary : loadedLibrariesTmp) { + llm.unloadSharedLibrary(loadedLibrary); } }