summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoxanne Skelly <roxie@lindenlab.com>2023-07-14 11:06:16 -0700
committerGitHub <noreply@github.com>2023-07-14 11:06:16 -0700
commit8b89a721950d00bfc1617181e42e745c81cc9d5d (patch)
treec2abe78f94e122969645c36a31b6f03b821ff227
parent0bc7cee2e18ae81526cda08298dce2e553e30ee9 (diff)
parentc70f54095e01490b7d6f4eb58253ab966d49fcbe (diff)
Merge pull request #279 from secondlife/roxie/SL-20009
SL-20009 - race condition - calling cards could be created without name
-rw-r--r--indra/newview/llfriendcard.cpp15
-rw-r--r--indra/newview/llviewerinventory.cpp25
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,