From 3689b28bf7066a750d24dbb34a809a6d2fa953ed Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine Date: Wed, 3 Feb 2010 17:14:04 +0200 Subject: merge --HG-- branch : product-engine --- indra/newview/llgroupmgr.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 8bd0e520c3..72a52ba13b 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1714,6 +1714,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, for (std::vector::iterator it = member_ids.begin(); it != member_ids.end(); ++it) { + LLUUID& ejected_member_id = (*it); + // Can't use 'eject' to leave a group. if ((*it) == gAgent.getID()) continue; @@ -1734,7 +1736,7 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, } msg->nextBlock("EjectData"); - msg->addUUID("EjecteeID",(*it)); + msg->addUUID("EjecteeID",ejected_member_id); if (msg->isSendFull()) { @@ -1746,13 +1748,15 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, for (LLGroupMemberData::role_list_t::iterator rit = (*mit).second->roleBegin(); rit != (*mit).second->roleEnd(); ++rit) { - if ((*rit).first.notNull()) + if ((*rit).first.notNull() && (*rit).second!=0) { - (*rit).second->removeMember(*it); + (*rit).second->removeMember(ejected_member_id); } } - delete (*mit).second; + group_datap->mMembers.erase(*it); + + delete (*mit).second; } } -- cgit v1.2.3 From 5dbd37f50bbefe8552f910d5079b48cd3f648c5e Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine Date: Wed, 3 Feb 2010 21:28:58 +0200 Subject: a bit log for major Bug EXT-4778 - may help to find problem. --HG-- branch : product-engine --- indra/newview/llgroupmgr.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 72a52ba13b..4c1019a882 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1708,6 +1708,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, bool start_message = true; LLMessageSystem* msg = gMessageSystem; + + LLGroupMgrGroupData* group_datap = LLGroupMgr::getInstance()->getGroupData(group_id); if (!group_datap) return; @@ -1715,6 +1717,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, it != member_ids.end(); ++it) { LLUUID& ejected_member_id = (*it); + + llwarns << "LLGroupMgr::sendGroupMemberEjects -- ejecting member" << ejected_member_id << llendl; // Can't use 'eject' to leave a group. if ((*it) == gAgent.getID()) continue; @@ -1751,11 +1755,14 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, if ((*rit).first.notNull() && (*rit).second!=0) { (*rit).second->removeMember(ejected_member_id); + + llwarns << "LLGroupMgr::sendGroupMemberEjects - removing member from role " << llendl; } } group_datap->mMembers.erase(*it); + llwarns << "LLGroupMgr::sendGroupMemberEjects - deleting memnber data " << llendl; delete (*mit).second; } } @@ -1764,6 +1771,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, { gAgent.sendReliableMessage(); } + + llwarns << "LLGroupMgr::sendGroupMemberEjects - done " << llendl; } void LLGroupMgr::sendGroupRoleChanges(const LLUUID& group_id) -- cgit v1.2.3 From cf18a1d22c7a4c315a651bc39085bc6d723e8e7d Mon Sep 17 00:00:00 2001 From: "Paul Guslisty pguslisty@productengine.com" Date: Thu, 11 Feb 2010 12:52:26 +0200 Subject: EXT - 2753 (Implement Avatar icons on IM multifloater tabs) refactoring: - Deleted unnecessary parameters (UIButtonImageTopPadding, UIButtonImageBottomPadding) from settings.xml and their usage in LLTabContainer - Deleted triggers (LLIMFloaterContainer::processProperties and LLIMFloaterContainer::changed) due to LLIMFloaterContainer no more Observer - Renamed class LLParticularGroupMgrObserver to LLParticularGroupObserver as the last one's name is more self explanatory --HG-- branch : product-engine --- indra/newview/llgroupmgr.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 4c1019a882..e65990a095 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -762,7 +762,7 @@ void LLGroupMgr::addObserver(LLGroupMgrObserver* observer) mObservers.insert(std::pair(observer->getID(), observer)); } -void LLGroupMgr::addObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer) +void LLGroupMgr::addObserver(const LLUUID& group_id, LLParticularGroupObserver* observer) { if(group_id.notNull() && observer) { @@ -792,7 +792,7 @@ void LLGroupMgr::removeObserver(LLGroupMgrObserver* observer) } } -void LLGroupMgr::removeObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer) +void LLGroupMgr::removeObserver(const LLUUID& group_id, LLParticularGroupObserver* observer) { if(group_id.isNull() || !observer) { @@ -1364,7 +1364,7 @@ void LLGroupMgr::notifyObservers(LLGroupChange gc) gi->second->mChanged = FALSE; - // notify LLParticularGroupMgrObserver + // notify LLParticularGroupObserver observer_map_t::iterator obs_it = mParticularObservers.find(group_id); if(obs_it == mParticularObservers.end()) return; -- cgit v1.2.3 From c53e587170d5c6dfeb5fa418a8b4eda964ee8a91 Mon Sep 17 00:00:00 2001 From: Tofu Linden Date: Thu, 11 Feb 2010 13:32:50 +0000 Subject: CID-115 Checker: MISSING_BREAK Function: LLGroupMgrGroupData::sendRoleChanges() File: /indra/newview/llgroupmgr.cpp not a bug. --- indra/newview/llgroupmgr.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 4c1019a882..c813c8b2f9 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -677,9 +677,12 @@ void LLGroupMgrGroupData::sendRoleChanges() break; } case RC_UPDATE_ALL: + // fall through case RC_UPDATE_POWERS: need_power_recalc = true; + // fall through case RC_UPDATE_DATA: + // fall through default: { LLGroupRoleData* group_role_data = (*role_it).second; -- cgit v1.2.3 From f25fda6edc2b7d4c835dd2d113e01f3878f4c00d Mon Sep 17 00:00:00 2001 From: Andrew Dyukov Date: Mon, 15 Feb 2010 21:07:12 +0200 Subject: Fixed major bug EXT-4778 ([crashhunters] Crash @ LLGroupMgr::sendGroupMemberEjects [secondlife-bin llgroupmgr.cpp:1708]) - Replaced usage of map iterator (which later became invalid and this caused crash) with pointer to data. --HG-- branch : product-engine --- indra/newview/llgroupmgr.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 4db75bbd8a..686e2dd734 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1730,6 +1730,7 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, LLGroupMgrGroupData::member_list_t::iterator mit = group_datap->mMembers.find(*it); if (mit != group_datap->mMembers.end()) { + LLGroupMemberData* member_data = (*mit).second; // Add them to the message if (start_message) { @@ -1752,8 +1753,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, } // Clean up groupmgr - for (LLGroupMemberData::role_list_t::iterator rit = (*mit).second->roleBegin(); - rit != (*mit).second->roleEnd(); ++rit) + for (LLGroupMemberData::role_list_t::iterator rit = member_data->roleBegin(); + rit != member_data->roleEnd(); ++rit) { if ((*rit).first.notNull() && (*rit).second!=0) { @@ -1766,7 +1767,7 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, group_datap->mMembers.erase(*it); llwarns << "LLGroupMgr::sendGroupMemberEjects - deleting memnber data " << llendl; - delete (*mit).second; + delete member_data; } } -- cgit v1.2.3 From c97704b394058319fa12def0279cfc5b133bb213 Mon Sep 17 00:00:00 2001 From: Andrew Dyukov Date: Mon, 15 Feb 2010 21:22:35 +0200 Subject: No ticket. Minor cleanup in LLGroupMgr::sendGroupMemberEjects() - Removed warnings used to deal with fixed EXT-4778 - Replaced (*it) with ejected_member_id where it wasn't to make code more clear --HG-- branch : product-engine --- indra/newview/llgroupmgr.cpp | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 686e2dd734..6dbd3a81e8 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1721,13 +1721,11 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, { LLUUID& ejected_member_id = (*it); - llwarns << "LLGroupMgr::sendGroupMemberEjects -- ejecting member" << ejected_member_id << llendl; - // Can't use 'eject' to leave a group. - if ((*it) == gAgent.getID()) continue; + if (ejected_member_id == gAgent.getID()) continue; // Make sure they are in the group, and we need the member data - LLGroupMgrGroupData::member_list_t::iterator mit = group_datap->mMembers.find(*it); + LLGroupMgrGroupData::member_list_t::iterator mit = group_datap->mMembers.find(ejected_member_id); if (mit != group_datap->mMembers.end()) { LLGroupMemberData* member_data = (*mit).second; @@ -1759,14 +1757,11 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, if ((*rit).first.notNull() && (*rit).second!=0) { (*rit).second->removeMember(ejected_member_id); - - llwarns << "LLGroupMgr::sendGroupMemberEjects - removing member from role " << llendl; } } - group_datap->mMembers.erase(*it); + group_datap->mMembers.erase(ejected_member_id); - llwarns << "LLGroupMgr::sendGroupMemberEjects - deleting memnber data " << llendl; delete member_data; } } @@ -1775,8 +1770,6 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, { gAgent.sendReliableMessage(); } - - llwarns << "LLGroupMgr::sendGroupMemberEjects - done " << llendl; } void LLGroupMgr::sendGroupRoleChanges(const LLUUID& group_id) -- cgit v1.2.3 From 216d9e5d37362995ee2be158de493d06b294c016 Mon Sep 17 00:00:00 2001 From: Andrew Dyukov Date: Fri, 19 Feb 2010 22:29:55 +0200 Subject: No ticket. Minor style changes in code introduced in changeset 43f903cf4d89. --HG-- branch : product-engine --- indra/newview/llgroupmgr.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 6dbd3a81e8..6e7321f739 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1728,7 +1728,6 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, LLGroupMgrGroupData::member_list_t::iterator mit = group_datap->mMembers.find(ejected_member_id); if (mit != group_datap->mMembers.end()) { - LLGroupMemberData* member_data = (*mit).second; // Add them to the message if (start_message) { @@ -1750,6 +1749,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, start_message = true; } + LLGroupMemberData* member_data = (*mit).second; + // Clean up groupmgr for (LLGroupMemberData::role_list_t::iterator rit = member_data->roleBegin(); rit != member_data->roleEnd(); ++rit) @@ -1762,6 +1763,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, group_datap->mMembers.erase(ejected_member_id); + // member_data was introduced and is used here instead of (*mit).second to avoid crash because of invalid iterator + // It becomes invalid after line with erase above. EXT-4778 delete member_data; } } -- cgit v1.2.3 From a8165dfe59771962963e8a807b129c04a74f6d59 Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine Date: Tue, 23 Feb 2010 18:05:00 +0200 Subject: fix for normal EXT-5598 Group member status list is sorted by name instead of date --HG-- branch : product-engine --- indra/newview/llgroupmgr.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'indra/newview/llgroupmgr.cpp') diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 6e7321f739..ea5462a3e3 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -838,7 +838,8 @@ static void formatDateString(std::string &date_string) std::string day = result[2]; // ISO 8601 date format - date_string = llformat("%02s/%02s/%04s", month.c_str(), day.c_str(), year.c_str()); + //date_string = llformat("%02s/%02s/%04s", month.c_str(), day.c_str(), year.c_str()); + date_string = llformat("%04s/%02s/%04s", year.c_str(), month.c_str(), day.c_str()); } } -- cgit v1.2.3