From dcf115beb64312c616909f50141003a376039125 Mon Sep 17 00:00:00 2001 From: Beq Date: Thu, 12 Sep 2024 16:34:16 +0100 Subject: [PATCH] FIRE-34496 - BugSplat Crash: renderAvatars (when imposter rendering) Fix for mAvatar not initialised when single_avatar is null. Also added additional null checks in the avatar rendering process to prevent potential null dereference issues. --- indra/newview/lldrawpoolavatar.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index f286a04ae1..fd34be11bc 100644 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -693,7 +693,7 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass) // Add avatar hitbox debug static LLCachedControl render_hitbox(gSavedSettings, "DebugRenderHitboxes", false); - if (render_hitbox && pass == 2 && mAvatar && !mAvatar->isControlAvatar()) + if (render_hitbox && pass == 2 && (single_avatar || mAvatar) && !mAvatar->isControlAvatar()) { LL_PROFILE_ZONE_NAMED_CATEGORY_AVATAR("render_hitbox"); @@ -784,14 +784,14 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass) { LL_PROFILE_ZONE_NAMED_CATEGORY_AVATAR("Find avatarp"); // Tracy markup const LLFace *facep = mDrawFace[0]; - if (!facep->getDrawable()) + if (!facep || !facep->getDrawable()) // trap possible null dereference { return; } avatarp = (LLVOAvatar *)facep->getDrawable()->getVObj().get(); } - if (avatarp->isDead() || avatarp->mDrawable.isNull()) + if (!avatarp || avatarp->isDead() || avatarp->mDrawable.isNull()) // trap possible null dereference { return; }