From 8e173de3096a8bf79e0fa0aa5c5bd6a696dc20f8 Mon Sep 17 00:00:00 2001 From: Alexander Gavriliuk Date: Wed, 27 Sep 2023 11:53:23 +0200 Subject: SL-20345 Avoid of ASSERT (\!mRootVolp) in LLControlAvatar::~LLControlAvatar() --- indra/newview/llcontrolavatar.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'indra/newview/llcontrolavatar.cpp') diff --git a/indra/newview/llcontrolavatar.cpp b/indra/newview/llcontrolavatar.cpp index 91031034c6..af493fec16 100644 --- a/indra/newview/llcontrolavatar.cpp +++ b/indra/newview/llcontrolavatar.cpp @@ -379,6 +379,7 @@ void LLControlAvatar::idleUpdate(LLAgent &agent, const F64 &time) void LLControlAvatar::markDead() { + mRootVolp = NULL; super::markDead(); mControlAVBridge = NULL; } -- cgit v1.2.3 From 5e697cc04c0dd876e2484dbe49e32ddd7a711b3d Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Wed, 21 Feb 2024 00:31:08 +0200 Subject: SL-20469 Crash at dead mRootVolp in getAttachedAvatar() --- indra/newview/llcontrolavatar.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'indra/newview/llcontrolavatar.cpp') diff --git a/indra/newview/llcontrolavatar.cpp b/indra/newview/llcontrolavatar.cpp index 50b9af668b..d764f64c79 100644 --- a/indra/newview/llcontrolavatar.cpp +++ b/indra/newview/llcontrolavatar.cpp @@ -99,7 +99,6 @@ LLVOAvatar *LLControlAvatar::getAttachedAvatar() void LLControlAvatar::getNewConstraintFixups(LLVector3& new_pos_fixup, F32& new_scale_fixup) const { - F32 max_legal_offset = MAX_LEGAL_OFFSET; if (gSavedSettings.getControl("AnimatedObjectsMaxLegalOffset")) { @@ -362,6 +361,9 @@ LLControlAvatar *LLControlAvatar::createControlAvatar(LLVOVolume *obj) void LLControlAvatar::markForDeath() { mMarkedForDeath = true; + // object unlinked cav and might be dead already + // might need to clean mControlAVBridge here as well + mRootVolp = NULL; } void LLControlAvatar::idleUpdate(LLAgent &agent, const F64 &time) @@ -440,7 +442,7 @@ void LLControlAvatar::updateDebugText() F32 streaming_cost = 0.f; std::string cam_dist_string = ""; S32 cam_dist_count = 0; - F32 lod_radius = mRootVolp->mLODRadius; + F32 lod_radius = mRootVolp ? mRootVolp->mLODRadius : 0.f; for (std::vector::iterator it = volumes.begin(); it != volumes.end(); ++it) -- cgit v1.2.3