SL-14078 Validate region id for environments

It is possible for agent to pass multiple region borders fast, resulting in environment updates affecting wrong regions
master
Andrey Kleshchev 2020-10-09 18:39:53 +03:00 committed by Ansariel
parent 480c9a0288
commit f0bfb90056
1 changed files with 11 additions and 0 deletions

View File

@ -1721,6 +1721,17 @@ void LLEnvironment::updateShaderUniforms(LLGLSLShader *shader)
void LLEnvironment::recordEnvironment(S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envinfo, LLSettingsBase::Seconds transition)
{
if (!gAgent.getRegion())
{
return;
}
// mRegionId id can be null, no specification as to why and if it's valid so check valid ids only
if (gAgent.getRegion()->getRegionID() != envinfo->mRegionId && envinfo->mRegionId.notNull())
{
LL_INFOS("ENVIRONMENT") << "Requested environmend region id: " << envinfo->mRegionId << " agent is on: " << gAgent.getRegion()->getRegionID() << LL_ENDL;
return;
}
if (envinfo->mParcelId == INVALID_PARCEL_ID)
{
// the returned info applies to an entire region.