summaryrefslogtreecommitdiff
path: root/indra/newview/llfavoritesbar.cpp
diff options
context:
space:
mode:
authorBrad Payne (Vir Linden) <vir@lindenlab.com>2020-08-19 16:01:20 +0100
committerBrad Payne (Vir Linden) <vir@lindenlab.com>2020-08-19 16:01:20 +0100
commit898dfdb52d24701bb2e51fd783c91721c0f5f40e (patch)
treea16c783a4f49dd6be78aa3ac49782cbe0c9a3311 /indra/newview/llfavoritesbar.cpp
parent7e37263fc5cb93e31727b2e3243f2221ed1f8cad (diff)
parente8b31d03b4f6f0ffb981b4ea150743daf7b4a958 (diff)
Merge remote-tracking branch 'origin/master' into SL-12995
Diffstat (limited to 'indra/newview/llfavoritesbar.cpp')
-rw-r--r--indra/newview/llfavoritesbar.cpp29
1 files changed, 23 insertions, 6 deletions
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index 17952349dc..347997a69a 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -1590,14 +1590,29 @@ void LLFavoritesOrderStorage::load()
<< (fav_llsd.isMap() ? "" : "un") << "successfully"
<< LL_ENDL;
in_file.close();
- user_llsd = fav_llsd[gAgentUsername];
+ if (fav_llsd.isMap() && fav_llsd.has(gAgentUsername))
+ {
+ user_llsd = fav_llsd[gAgentUsername];
- S32 index = 0;
- for (LLSD::array_iterator iter = user_llsd.beginArray();
+ S32 index = 0;
+ bool needs_validation = gSavedPerAccountSettings.getBOOL("ShowFavoritesOnLogin");
+ for (LLSD::array_iterator iter = user_llsd.beginArray();
iter != user_llsd.endArray(); ++iter)
- {
- mSortIndexes.insert(std::make_pair(iter->get("id").asUUID(), index));
- index++;
+ {
+ // Validation
+ LLUUID fv_id = iter->get("id").asUUID();
+ if (needs_validation
+ && (fv_id.isNull()
+ || iter->get("asset_id").asUUID().isNull()
+ || iter->get("name").asString().empty()
+ || iter->get("slurl").asString().empty()))
+ {
+ mRecreateFavoriteStorage = true;
+ }
+
+ mSortIndexes.insert(std::make_pair(fv_id, index));
+ index++;
+ }
}
}
else
@@ -1841,6 +1856,8 @@ void LLFavoritesOrderStorage::rearrangeFavoriteLandmarks(const LLUUID& source_it
BOOL LLFavoritesOrderStorage::saveFavoritesRecord(bool pref_changed)
{
+ pref_changed |= mRecreateFavoriteStorage;
+ mRecreateFavoriteStorage = false;
LLUUID favorite_folder= gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE);
if (favorite_folder.isNull())