diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index e2289f821eb9194e46d0c8862cd950e94708ff06..e459109d6a1d545a1becd3503aafca1270c24ee2 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);