Protect m_storage.find(key) to fix a race

This commit is contained in:
Silent 2020-02-02 16:50:58 +01:00 committed by kd-11
commit 7f4e546f19

View file

@ -455,12 +455,15 @@ public:
backend_traits::validate_pipeline_properties(vertex_program, fragment_program, pipelineProperties); backend_traits::validate_pipeline_properties(vertex_program, fragment_program, pipelineProperties);
pipeline_key key = { vertex_program.id, fragment_program.id, pipelineProperties }; pipeline_key key = { vertex_program.id, fragment_program.id, pipelineProperties };
{
reader_lock lock(m_pipeline_mutex);
const auto I = m_storage.find(key); const auto I = m_storage.find(key);
if (I != m_storage.end()) if (I != m_storage.end())
{ {
m_cache_miss_flag = false; m_cache_miss_flag = false;
return I->second; return I->second;
} }
}
if (allow_async) if (allow_async)
{ {