[sldev] [VIEWER] Daring construct? (is this safe?)
Nicholaz Beresford
nicholaz at blueflash.cc
Wed Sep 26 08:53:27 PDT 2007
Seen in llgroupmgr.cpp at 1330
mGroups is a std::map.
Question is if the mGroups.erase(gi++); is safe or depends on
order of evaluation and/or possibly accesses freed memory
(doing the increment after the erase)?
(I'm seeing this in a lot of places ... grep erase\(.*++\); ).
// get rid of groups that aren't observed
for (group_iter gi = mGroups.begin(); gi != mGroups.end() && mGroups.size() > MAX_CACHED_GROUPS / 2; )
{
observer_iter oi = mObservers.find(gi->first);
if (oi == mObservers.end())
{
// not observed
LLGroupMgrGroupData* group_datap = gi->second;
delete group_datap;
mGroups.erase(gi++);
}
else
{
++gi;
}
}
--
Second Life from the inside out:
http://nicholaz-beresford.blogspot.com/
More information about the SLDev
mailing list