From e25ffeb20e09b95ee74df4644cec2d80ebef22d2 Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Mon, 20 Nov 2023 22:56:52 -0500
Subject: [PATCH] Fix crash in selection highlight render

---
 indra/newview/pipeline.cpp | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index e2289f821eb..e459109d6a1 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -3751,10 +3751,10 @@ void LLPipeline::renderHighlights()
 		for (U32 i = 0; i < count; i++)
 		{
 			LLFace *facep = mSelectedFaces[i];
-			if (!facep || facep->getDrawable()->isDead())
+			if (!facep || (facep->getDrawable() && facep->getDrawable()->isDead()))
 			{
-				LL_ERRS() << "Bad face on selection" << LL_ENDL;
-				return;
+				LL_WARNS() << "Bad face on selection" << LL_ENDL;
+				continue;
 			}
 			
 			facep->renderSelected(mFaceSelectImagep, color);
@@ -3799,10 +3799,10 @@ void LLPipeline::renderHighlights()
 		for (U32 i = 0; i < count; i++)
 		{
 			LLFace *facep = mSelectedFaces[i];
-			if (!facep || facep->getDrawable()->isDead())
+			if (!facep || (facep->getDrawable() && facep->getDrawable()->isDead()))
 			{
-				LL_ERRS() << "Bad face on selection" << LL_ENDL;
-				return;
+				LL_WARNS() << "Bad face on selection" << LL_ENDL;
+				continue;
 			}
 
 			facep->renderSelected(mFaceSelectImagep, color);
@@ -3829,10 +3829,10 @@ void LLPipeline::renderHighlights()
 		for (U32 i = 0; i < count; i++)
 		{
 			LLFace *facep = mSelectedFaces[i];
-			if (!facep || facep->getDrawable()->isDead())
+			if (!facep || (facep->getDrawable() && facep->getDrawable()->isDead()))
 			{
-				LL_ERRS() << "Bad face on selection" << LL_ENDL;
-				return;
+				LL_WARNS() << "Bad face on selection" << LL_ENDL;
+				continue;
 			}
 
 			facep->renderSelected(mFaceSelectImagep, color);
-- 
GitLab