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
parent 0a2874405d
commit 7f4e546f19
+3
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)
{ {