diff --git a/indra/newview/llcallingcard.cpp b/indra/newview/llcallingcard.cpp
index d42048bf70ab206219665fdc82e564c9674ec534..7c73d0069b94cd81f3f500046d951d920921d19f 100644
--- a/indra/newview/llcallingcard.cpp
+++ b/indra/newview/llcallingcard.cpp
@@ -234,20 +234,20 @@ const LLUUID& LLAvatarTracker::getAvatarID()
 	}
 }
 
-S32 LLAvatarTracker::addBuddyList(const LLAvatarTracker::buddy_map_t& buds)
+S32 LLAvatarTracker::addBuddyList(const LLAvatarTracker::buddy_map_t buds)
 {
 	using namespace std;
 
 	U32 new_buddy_count = 0;
 	LLUUID agent_id;
-	for(buddy_map_t::const_iterator itr = buds.begin(); itr != buds.end(); ++itr)
+	for(const auto& itr : buds)
 	{
-		agent_id = (*itr).first;
+		agent_id = (itr).first;
 		buddy_map_t::const_iterator existing_buddy = mBuddyInfo.find(agent_id);
 		if(existing_buddy == mBuddyInfo.end())
 		{
 			++new_buddy_count;
-			mBuddyInfo[agent_id] = (*itr).second;
+			mBuddyInfo[agent_id] = (itr).second;
 
 			// pre-request name for notifications?
 			LLAvatarName av_name;
@@ -265,7 +265,7 @@ S32 LLAvatarTracker::addBuddyList(const LLAvatarTracker::buddy_map_t& buds)
 		else
 		{
 			LLRelationship* e_r = (*existing_buddy).second;
-			LLRelationship* n_r = (*itr).second;
+			LLRelationship* n_r = (itr).second;
 			LL_WARNS() << "!! Add buddy for existing buddy: " << agent_id
 					<< " [" << (e_r->isOnline() ? "Online" : "Offline") << "->" << (n_r->isOnline() ? "Online" : "Offline")
 					<< ", " <<  e_r->getRightsGrantedTo() << "->" << n_r->getRightsGrantedTo()
diff --git a/indra/newview/llcallingcard.h b/indra/newview/llcallingcard.h
index 1cc7b26cf02076e91b1aecfc624b29ea31301250..30b62ef78e347992f806f1957b72cbba5853ff91 100644
--- a/indra/newview/llcallingcard.h
+++ b/indra/newview/llcallingcard.h
@@ -111,9 +111,9 @@ class LLAvatarTracker
 
 	// add or remove agents from buddy list. Each method takes a set
 	// of buddies and returns how many were actually added or removed.
-	typedef boost::unordered_flat_map<LLUUID, LLRelationship*> buddy_map_t;
+	typedef boost::unordered_map<LLUUID, LLRelationship*> buddy_map_t;
 
-	S32 addBuddyList(const buddy_map_t& buddies);
+	S32 addBuddyList(const buddy_map_t buddies);
 	//S32 removeBuddyList(const buddy_list_t& exes);
 	void copyBuddyList(buddy_map_t& buddies) const;
 
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index dc9a0d1a91a862502406a7ae4c91069e0535a3fb..7a6a2388c9a9ca5d3b31bd1b1eda2fefaa9a0dda 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -1931,28 +1931,32 @@ bool idle_startup()
 			{
 				LLUUID agent_id;
 				S32 has_rights = 0, given_rights = 0;
-				LLSD buddy_id = (*it)["buddy_id"];
-				if(buddy_id.isDefined())
+				const auto& buddy_map = it->asMap();
+				auto buddy_end = buddy_map.end();
+
+				auto buddy_it = buddy_map.find("buddy_id");
+				if(buddy_it != buddy_end)
 				{
-					agent_id = buddy_id.asUUID();
+					agent_id = buddy_it->second.asUUID();
 				}
 				else continue;
 
-				LLSD buddy_rights_has = (*it)["buddy_rights_has"];
-				if(buddy_rights_has.isDefined())
+				buddy_it = buddy_map.find("buddy_rights_has");
+				if(buddy_it != buddy_end)
 				{
-					has_rights = buddy_rights_has.asInteger();
+					has_rights = buddy_it->second.asInteger();
 				}
 
-				LLSD buddy_rights_given = (*it)["buddy_rights_given"];
-				if(buddy_rights_given.isDefined())
+
+				buddy_it = buddy_map.find("buddy_rights_given");
+				if (buddy_it != buddy_end)
 				{
-					given_rights = buddy_rights_given.asInteger();
+					given_rights = buddy_it->second.asInteger();
 				}
 
 				list[agent_id] = new LLRelationship(given_rights, has_rights, false);
 			}
-			LLAvatarTracker::instance().addBuddyList(list);
+			LLAvatarTracker::instance().addBuddyList(std::move(list));
 			display_startup();
  		}
 
diff --git a/indra/newview/llworldmap.cpp b/indra/newview/llworldmap.cpp
index 72a22ee598265028809485fe9297e345b15aeabf..7e39c81c403f1b9f6dc0e4d9f66896ee912e9469 100644
--- a/indra/newview/llworldmap.cpp
+++ b/indra/newview/llworldmap.cpp
@@ -623,11 +623,11 @@ void LLWorldMap::updateRegions(S32 x0, S32 y0, S32 x1, S32 y1)
 
 	// Remove blocks that have been request more than BLOCK_UPDATE_TIMER ago
 	// so we re-request them for an update
-	for (block_last_update_map_t::iterator it = mMapBlockLastUpdateOffsets.begin(); it != mMapBlockLastUpdateOffsets.end(); ++it)
+	for (const auto& it : mMapBlockLastUpdateOffsets)
 	{
-		if ((time_now - it->second) <= BLOCK_UPDATE_TIMER)
+		if ((time_now - it.second) <= BLOCK_UPDATE_TIMER)
 		{
-			new_offsets[it->first] = it->second;
+			new_offsets[it.first] = it.second;
 		}
 	}
 	mMapBlockLastUpdateOffsets.swap(new_offsets);
diff --git a/indra/newview/llworldmap.h b/indra/newview/llworldmap.h
index e9ecafea35fba9731338d20130c32173fbb43a50..6f85da22ff22cf26094cd8cf554dab316c1db216 100644
--- a/indra/newview/llworldmap.h
+++ b/indra/newview/llworldmap.h
@@ -217,7 +217,7 @@ class LLWorldMap final : public LLSingleton<LLWorldMap>
 	void reloadItems(bool force = false);	// Reload the items (people, hub, etc...)
 
 	// Region Map access
-	typedef boost::unordered_flat_map<U64, std::unique_ptr<LLSimInfo>> sim_info_map_t;
+	typedef boost::unordered_map<U64, std::unique_ptr<LLSimInfo>> sim_info_map_t;
 	const LLWorldMap::sim_info_map_t& getRegionMap() const { return mSimInfoMap; }
 	void updateRegions(S32 x0, S32 y0, S32 x1, S32 y1);		// Requests region info for a rectangle of regions (in grid coordinates)