From a4a011769892d4888b2d741fda629384b8ff6966 Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Thu, 22 Oct 2020 15:57:52 -0400
Subject: [PATCH] Further cleanup of LLSelectMgr loop abuse

---
 indra/newview/llselectmgr.cpp | 56 ++++++++---------------------------
 1 file changed, 12 insertions(+), 44 deletions(-)

diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 0b91a0c7cd1..71c3ea938ef 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -905,11 +905,8 @@ void LLSelectMgr::deselectObjectOnly(LLViewerObject* object, BOOL send_to_sim)
 
 void LLSelectMgr::addAsFamily(std::vector<LLViewerObject*>& objects, BOOL add_to_end)
 {
-	for (std::vector<LLViewerObject*>::iterator iter = objects.begin();
-		 iter != objects.end(); ++iter)
+	for (LLViewerObject* objectp : objects)
 	{
-		LLViewerObject* objectp = *iter;
-		
 		// Can't select yourself
 		if (objectp->mID == gAgentID
 			&& !mAllowSelectAvatar)
@@ -1051,10 +1048,8 @@ LLObjectSelectionHandle LLSelectMgr::setHoverObject(LLViewerObject *objectp, S32
 		objectp->addThisAndNonJointChildren(objects);
 
 		mHoverObjects->deleteAllNodes();
-		for (std::vector<LLViewerObject*>::iterator iter = objects.begin();
-			 iter != objects.end(); ++iter)
+		for (LLViewerObject* cur_objectp : objects)
 		{
-			LLViewerObject* cur_objectp = *iter;
 			if(!cur_objectp || cur_objectp->isDead())
 			{
 				continue;
@@ -1168,10 +1163,8 @@ void LLSelectMgr::unhighlightObjectAndFamily(LLViewerObject* objectp)
 	unhighlightObjectOnly(root_obj);
 
 	LLViewerObject::const_child_list_t& child_list = root_obj->getChildren();
-	for (LLViewerObject::child_list_t::const_iterator iter = child_list.begin();
-		 iter != child_list.end(); iter++)
+	for (LLViewerObject* child : child_list)
 	{
-		LLViewerObject* child = *iter;
 		unhighlightObjectOnly(child);
 	}
 }
@@ -1246,10 +1239,8 @@ LLObjectSelectionHandle LLSelectMgr::selectHighlightedObjects()
 void LLSelectMgr::deselectHighlightedObjects()
 {
 	BOOL select_linked_set = !ALControlCache::EditLinkedParts;
-	for (std::set<LLPointer<LLViewerObject> >::iterator iter = mRectSelectedObjects.begin();
-		 iter != mRectSelectedObjects.end(); iter++)
+	for (LLViewerObject* objectp : mRectSelectedObjects)
 	{
-		LLViewerObject *objectp = *iter;
 		if (!select_linked_set)
 		{
 			deselectObjectOnly(objectp);
@@ -6204,17 +6195,8 @@ LLSelectNode::LLSelectNode(const LLSelectNode& nodep)
 	mSilhouetteExists = nodep.mSilhouetteExists;
 	mObject = nodep.mObject;
 
-	std::vector<LLColor4>::const_iterator color_iter;
-	mSavedColors.clear();
-	for (color_iter = nodep.mSavedColors.begin(); color_iter != nodep.mSavedColors.end(); ++color_iter)
-	{
-		mSavedColors.push_back(*color_iter);
-	}
-	mSavedShinyColors.clear();
-	for (color_iter = nodep.mSavedShinyColors.begin(); color_iter != nodep.mSavedShinyColors.end(); ++color_iter)
-	{
-		mSavedShinyColors.push_back(*color_iter);
-	}
+	mSavedColors = nodep.mSavedColors;
+	mSavedShinyColors = nodep.mSavedShinyColors;
 	
 	saveTextures(nodep.mSavedTextures);
 }
@@ -6322,13 +6304,7 @@ void LLSelectNode::saveTextures(const uuid_vec_t& textures)
 {
 	if (mObject.notNull())
 	{
-		mSavedTextures.clear();
-
-		for (uuid_vec_t::const_iterator texture_it = textures.begin();
-			 texture_it != textures.end(); ++texture_it)
-		{
-			mSavedTextures.push_back(*texture_it);
-		}
+		mSavedTextures = textures;
 	}
 }
 
@@ -7401,14 +7377,9 @@ S32 LLObjectSelection::getSelectedObjectRenderCost()
        typedef std::set<LLUUID> uuid_list_t;
        uuid_list_t computed_objects;
 
-	   typedef std::list<LLPointer<LLViewerObject> > child_list_t;
-	   typedef const child_list_t const_child_list_t;
-
 	   // add render cost of complete linksets first, to get accurate texture counts
-       for (list_t::iterator iter = mList.begin(); iter != mList.end(); ++iter)
+       for (LLSelectNode* node : mList)
        {
-               LLSelectNode* node = *iter;
-			   
                LLVOVolume* object = (LLVOVolume*)node->getObject();
 
                if (object && object->isRootEdit())
@@ -7416,12 +7387,9 @@ S32 LLObjectSelection::getSelectedObjectRenderCost()
 				   cost += object->getRenderCost(textures);
 				   computed_objects.insert(object->getID());
 
-				   const_child_list_t children = object->getChildren();
-				   for (const_child_list_t::const_iterator child_iter = children.begin();
-						 child_iter != children.end();
-						 ++child_iter)
+				   LLViewerObject::const_child_list_t& children = object->getChildren();
+				   for (LLViewerObject* child_obj : children)
 				   {
-					   LLViewerObject* child_obj = *child_iter;
 					   LLVOVolume *child = child_obj ? child_obj->asVolume() : nullptr;
 					   if (child)
 					   {
@@ -7430,10 +7398,10 @@ S32 LLObjectSelection::getSelectedObjectRenderCost()
 					   }
 				   }
 
-				   for (LLVOVolume::texture_cost_t::iterator iter = textures.begin(); iter != textures.end(); ++iter)
+				   for (const auto& tex_cost_pair : textures)
 				   {
 					   // add the cost of each individual texture in the linkset
-					   cost += iter->second;
+					   cost += tex_cost_pair.second;
 				   }
 
 				   textures.clear();
-- 
GitLab