diff options
author | callum <none@none> | 2011-01-28 15:57:42 -0800 |
---|---|---|
committer | callum <none@none> | 2011-01-28 15:57:42 -0800 |
commit | d2b13de633b4719bf61e2905699dd1bb67ae0c36 (patch) | |
tree | 487c2ede5609fdb744dbfd71b7b1ce3a9e5ebc49 | |
parent | b46281211a8f8774f307980216142805ea8b0a3b (diff) |
STORM-934 POSSIBLE FIX [crashhunters] crash at [2] LLPanelAvatarProfile::got_full_name_callback(LLUUID const &,std::basic_string,std::allocator > const &,bool) [secondlife-bin llpanelavatar.cpp]
-rw-r--r-- | indra/newview/llpanelavatar.cpp | 20 | ||||
-rw-r--r-- | indra/newview/llpanelavatar.h | 1 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/panel_profile.xml | 8 |
3 files changed, 21 insertions, 8 deletions
diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index 94b2340c93..8a917a082c 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -625,8 +625,13 @@ void LLPanelAvatarProfile::processGroupProperties(const LLAvatarGroups* avatar_g getChild<LLUICtrl>("sl_groups")->setValue(groups); } -void LLPanelAvatarProfile::got_full_name_callback( const LLUUID& id, const std::string& full_name, bool is_group )
-{
+static void got_full_name_callback( LLHandle<LLPanel> profile_panel_handle, const std::string& full_name ) +{ + if (profile_panel_handle.isDead() ) return; + + LLPanelAvatarProfile* profile_panel = dynamic_cast<LLPanelAvatarProfile*>(profile_panel_handle.get());
+ if ( ! profile_panel ) return;
+ LLStringUtil::format_map_t args;
std::string name; @@ -641,9 +646,9 @@ void LLPanelAvatarProfile::got_full_name_callback( const LLUUID& id, const std:: args["[NAME]"] = name;
- std::string linden_name = getString("name_text_args", args);
- getChild<LLUICtrl>("name_descr_text")->setValue(linden_name);
-}
+ std::string linden_name = profile_panel->getString("name_text_args", args);
+ profile_panel->getChild<LLUICtrl>("name_descr_text")->setValue(linden_name); +} void LLPanelAvatarProfile::onNameCache(const LLUUID& agent_id, const LLAvatarName& av_name) { @@ -667,16 +672,17 @@ void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data) } // ask (asynchronously) for the avatar name + LLHandle<LLPanel> profile_panel_handle = getHandle();
std::string full_name;
if (gCacheName->getFullName(avatar_data->agent_id, full_name))
{
// name in cache, call callback directly
- got_full_name_callback( avatar_data->agent_id, full_name, false );
+ got_full_name_callback( profile_panel_handle, full_name );
}
else
{
// not in cache, lookup name
- gCacheName->get(avatar_data->agent_id, false, boost::bind( &LLPanelAvatarProfile::got_full_name_callback, this, _1, _2, _3 ));
+ gCacheName->get(avatar_data->agent_id, false, boost::bind( got_full_name_callback, profile_panel_handle, _2 ));
}
// get display name
diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h index 070fe4579a..b8cb62db43 100644 --- a/indra/newview/llpanelavatar.h +++ b/indra/newview/llpanelavatar.h @@ -209,7 +209,6 @@ protected: void onShareButtonClick();
private:
- void got_full_name_callback( const LLUUID& id, const std::string& full_name, bool is_group );
void onNameCache(const LLUUID& agent_id, const LLAvatarName& av_name);
typedef std::map< std::string,LLUUID> group_map_t;
diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index 61e3bb354f..d36220385d 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -34,6 +34,14 @@ name="RegisterDateFormat"> [REG_DATE] ([AGE]) </string> + <string + name="name_text_args"> + [NAME] + </string> + <string + name="display_name_text_args"> + [DISPLAY_NAME] + </string> <layout_stack name="layout" orientation="vertical" |