[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