MAINT-5760 Save the favorite in file with empty slurl string if it points to location that is no longer valid

meow-7.2.2
Mnikolenko ProductEngine 2016-02-29 14:00:04 +02:00
parent c01d1f5a20
commit ed608e2d5b
2 changed files with 15 additions and 3 deletions

View File

@ -1800,6 +1800,16 @@ BOOL LLFavoritesOrderStorage::saveFavoritesRecord(bool pref_changed)
}
}
for (std::set<LLUUID>::iterator it = mMissingSLURLs.begin(); it != mMissingSLURLs.end(); it++)
{
slurls_map_t::iterator slurl_iter = mSLURLs.find(*it);
if (slurl_iter != mSLURLs.end())
{
pref_changed = true;
break;
}
}
if((items != mPrevFavorites) || name_changed || pref_changed)
{
std::string filename = getStoredFavoritesFilename();
@ -1820,6 +1830,7 @@ BOOL LLFavoritesOrderStorage::saveFavoritesRecord(bool pref_changed)
LLSD user_llsd;
S32 fav_iter = 0;
mMissingSLURLs.clear();
for (LLInventoryModel::item_array_t::iterator it = items.begin(); it != items.end(); it++)
{
LLSD value;
@ -1837,8 +1848,10 @@ BOOL LLFavoritesOrderStorage::saveFavoritesRecord(bool pref_changed)
else
{
getSLURL((*it)->getAssetUUID());
value["slurl"] = "";
user_llsd[fav_iter] = value;
mUpdateRequired = true;
return FALSE;
mMissingSLURLs.insert((*it)->getAssetUUID());
}
}
else
@ -1869,7 +1882,6 @@ BOOL LLFavoritesOrderStorage::saveFavoritesRecord(bool pref_changed)
<< "' at '" << filename << "' " << LL_ENDL;
}
}
mPrevFavorites = items;
}

View File

@ -245,7 +245,7 @@ private:
typedef std::map<LLUUID, std::string> slurls_map_t;
slurls_map_t mSLURLs;
std::set<LLUUID> mMissingSLURLs;
bool mIsDirty;
struct IsNotInFavorites