diff options
| author | Roxanne Skelly <roxie@lindenlab.com> | 2023-07-14 11:06:16 -0700 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-14 11:06:16 -0700 | 
| commit | 8b89a721950d00bfc1617181e42e745c81cc9d5d (patch) | |
| tree | c2abe78f94e122969645c36a31b6f03b821ff227 /indra | |
| parent | 0bc7cee2e18ae81526cda08298dce2e553e30ee9 (diff) | |
| parent | c70f54095e01490b7d6f4eb58253ab966d49fcbe (diff) | |
Merge pull request #279 from secondlife/roxie/SL-20009
SL-20009 - race condition - calling cards could be created without name
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llfriendcard.cpp | 15 | ||||
| -rw-r--r-- | indra/newview/llviewerinventory.cpp | 25 | 
2 files changed, 21 insertions, 19 deletions
| diff --git a/indra/newview/llfriendcard.cpp b/indra/newview/llfriendcard.cpp index e395da7f1e..97fff033b6 100644 --- a/indra/newview/llfriendcard.cpp +++ b/indra/newview/llfriendcard.cpp @@ -534,20 +534,7 @@ void LLFriendCardsManager::syncFriendsFolder()  	// Create own calling card if it was not found in Friends/All folder  	if (!collector.isAgentCallingCardFound())  	{ -		LLAvatarName av_name; -		LLAvatarNameCache::get( gAgentID, &av_name ); - -		create_inventory_item(gAgentID, -							  gAgent.getSessionID(), -							  calling_cards_folder_id, -							  LLTransactionID::tnull, -							  av_name.getCompleteName(), -							  gAgentID.asString(), -							  LLAssetType::AT_CALLINGCARD, -							  LLInventoryType::IT_CALLINGCARD, -                              NO_INV_SUBTYPE, -							  PERM_MOVE | PERM_TRANSFER, -							  NULL); +		create_inventory_callingcard(gAgentID, calling_cards_folder_id);  	}      // All folders created and updated. diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 50252556de..15942faa98 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -1046,14 +1046,29 @@ void create_inventory_item(const LLUUID& agent_id, const LLUUID& session_id,  	gAgent.sendReliableMessage();  } +void create_inventory_callingcard_callback(LLPointer<LLInventoryCallback> cb, +                                           const LLUUID &parent, +                                           const LLUUID &avatar_id, +                                           const LLAvatarName &av_name) +{ +    std::string item_desc = avatar_id.asString(); +    create_inventory_item(gAgent.getID(), +                          gAgent.getSessionID(), +                          parent, +                          LLTransactionID::tnull, +                          av_name.getUserName(), +                          item_desc, +                          LLAssetType::AT_CALLINGCARD, +                          LLInventoryType::IT_CALLINGCARD, +                          NO_INV_SUBTYPE, +                          PERM_MOVE | PERM_TRANSFER, +                          cb); +} +  void create_inventory_callingcard(const LLUUID& avatar_id, const LLUUID& parent /*= LLUUID::null*/, LLPointer<LLInventoryCallback> cb/*=NULL*/)  { -	std::string item_desc = avatar_id.asString();  	LLAvatarName av_name; -	LLAvatarNameCache::get(avatar_id, &av_name); -	create_inventory_item(gAgent.getID(), gAgent.getSessionID(), -						  parent, LLTransactionID::tnull, av_name.getUserName(), item_desc, LLAssetType::AT_CALLINGCARD, -                          LLInventoryType::IT_CALLINGCARD, NO_INV_SUBTYPE, PERM_MOVE | PERM_TRANSFER, cb); +    LLAvatarNameCache::get(avatar_id, boost::bind(&create_inventory_callingcard_callback, cb, parent, _1, _2));  }  void create_inventory_wearable(const LLUUID& agent_id, const LLUUID& session_id, | 
