FIRE-34587 bugsplat - echoes of previous mirror related splats.

Assumption: When a viewer object is destroyed and unregistered, references to it in mNearestHero and mDefaultProbe->mViewerObject are not cleared, leading to dangling pointers.
meow-7.2.2
Beq 2024-09-30 13:14:07 +01:00
parent 103594f8e6
commit b0f7ad8e18
1 changed files with 13 additions and 1 deletions

View File

@ -640,7 +640,7 @@ bool LLHeroProbeManager::registerViewerObject(LLVOVolume* drawablep)
// Probe isn't in our list for consideration. Add it.
mHeroVOList.push_back(drawablep);
return true;
}
}
return false;
}
@ -652,4 +652,16 @@ void LLHeroProbeManager::unregisterViewerObject(LLVOVolume* drawablep)
{
mHeroVOList.erase(found_itr);
}
// <FS:Beq> FIRE-34587 - Bugsplat crash in getIsDynamic due to lifetime management of hero probe and underlying objects
// If the unregistered object is mNearestHero, reset mNearestHero and mDefaultProbe->mViewerObject
if (drawablep == mNearestHero)
{
mNearestHero = nullptr;
if (mDefaultProbe.notNull())
{
mDefaultProbe->mViewerObject = nullptr;
}
}
// </FS:Beq>
}