summaryrefslogtreecommitdiff
path: root/indra/newview/llviewerobject.cpp
diff options
context:
space:
mode:
authorAndrey Lihatskiy <alihatskiy@productengine.com>2024-04-12 00:12:30 +0300
committerGitHub <noreply@github.com>2024-04-12 00:12:30 +0300
commitdfbbad813f3a1b9a151db7b25d3657590324ca4c (patch)
treee31cee85f651a874c4b6edc7491efa0cb2ec93d5 /indra/newview/llviewerobject.cpp
parent17e1f3692c5c1e9cbc6ba6895b312a8baae9aec2 (diff)
parentd0102af56d3b1d5b1d9bf3c8eb9aeea77028b70e (diff)
Merge pull request #1204 from Ansariel/DRTVWR-600-maint-A
Merge main into maint-A
Diffstat (limited to 'indra/newview/llviewerobject.cpp')
-rw-r--r--indra/newview/llviewerobject.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index d579f95759..668596b96c 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -391,6 +391,13 @@ LLViewerObject::~LLViewerObject()
sNumObjects--;
sNumZombieObjects--;
llassert(mChildList.size() == 0);
+ llassert(mControlAvatar.isNull()); // Should have been cleaned by now
+ if (mControlAvatar.notNull())
+ {
+ mControlAvatar->markForDeath();
+ mControlAvatar = NULL;
+ LL_WARNS() << "Dead object owned a live control avatar" << LL_ENDL;
+ }
clearInventoryListeners();
}
@@ -2982,6 +2989,10 @@ void LLViewerObject::updateControlAvatar()
return;
}
+ // caller isn't supposed to operate on a dead object,
+ // avatar was already cleaned up
+ llassert(!isDead());
+
bool should_have_control_avatar = false;
if (is_animated_object)
{
@@ -3065,7 +3076,6 @@ void LLViewerObject::unlinkControlAvatar()
if (mControlAvatar)
{
mControlAvatar->markForDeath();
- mControlAvatar->mRootVolp = NULL;
mControlAvatar = NULL;
}
}
@@ -4995,7 +5005,7 @@ void LLViewerObject::setTEImage(const U8 te, LLViewerTexture *imagep)
S32 LLViewerObject::setTETextureCore(const U8 te, LLViewerTexture *image)
{
LLUUID old_image_id = getTE(te)->getID();
- const LLUUID& uuid = image->getID();
+ const LLUUID& uuid = image ? image->getID() : LLUUID::null;
S32 retval = 0;
if (uuid != getTE(te)->getID() ||
uuid == LLUUID::null)