diff --git a/Components/RTShaderSystem/src/OgreShaderProgramManager.cpp b/Components/RTShaderSystem/src/OgreShaderProgramManager.cpp index dfbb6c04d4c..5850f0561c1 100644 --- a/Components/RTShaderSystem/src/OgreShaderProgramManager.cpp +++ b/Components/RTShaderSystem/src/OgreShaderProgramManager.cpp @@ -70,7 +70,10 @@ void ProgramManager::releasePrograms(const ProgramSet* programSet) if(prg.use_count() > ResourceGroupManager::RESOURCE_SYSTEM_NUM_REFERENCE_COUNTS + 2) continue; - mShaderList.erase(std::find(mShaderList.begin(), mShaderList.end(), prg)); + const auto it = std::find(mShaderList.begin(), mShaderList.end(), prg); + // TODO: this check should not be necessary, but we observed strange prg.use_count() in the wild + if(it != mShaderList.end()) + mShaderList.erase(it); GpuProgramManager::getSingleton().remove(prg); } }