#3697 Crash on LLAvatarPropertiesProcessor::notifyObservers

master
Andrey Kleshchev 2025-03-07 22:37:14 +02:00 committed by Andrey Kleshchev
parent 5ce0c5858c
commit d5b72eb78d
4 changed files with 21 additions and 1 deletions

View File

@ -542,6 +542,10 @@ void LLFloaterPreference::onDoNotDisturbResponseChanged()
LLFloaterPreference::~LLFloaterPreference()
{
LLConversationLog::instance().removeObserver(this);
if (LLAvatarPropertiesProcessor::instanceExists())
{
LLAvatarPropertiesProcessor::getInstance()->removeObserver(gAgent.getID(), this);
}
mComplexityChangedSignal.disconnect();
}

View File

@ -266,6 +266,15 @@ void LLPanelClassifiedInfo::processProperties(void* data, EAvatarProcessorType t
}
}
void LLPanelClassifiedInfo::setAvatarId(const LLUUID& avatar_id)
{
if (mAvatarId.notNull())
{
LLAvatarPropertiesProcessor::getInstance()->removeObserver(mAvatarId, this);
}
mAvatarId = avatar_id;
}
void LLPanelClassifiedInfo::resetData()
{
setClassifiedName(LLStringUtil::null);

View File

@ -53,7 +53,7 @@ public:
/*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
void setAvatarId(const LLUUID& avatar_id) { mAvatarId = avatar_id; }
void setAvatarId(const LLUUID& avatar_id);
LLUUID& getAvatarId() { return mAvatarId; }

View File

@ -78,6 +78,13 @@ class LLClassifiedHandler : public LLCommandHandler, public LLAvatarPropertiesOb
public:
// throttle calls from untrusted browsers
LLClassifiedHandler() : LLCommandHandler("classified", UNTRUSTED_THROTTLE) {}
virtual ~LLClassifiedHandler()
{
if (LLAvatarPropertiesProcessor::instanceExists())
{
LLAvatarPropertiesProcessor::getInstance()->removeObserver(LLUUID(), this);
}
}
std::set<LLUUID> mClassifiedIds;
std::string mRequestVerb;