DRTVWR-476: Make ~LLEventPumps() call reset() on its way out.
~LLEventPumps() deletes every LLEventPump instance it created itself. However, many classes themselves contain LLEventPump subclass instances. These are registered with LLEventPumps without it managing their lifespan. But LLEventPump::reset() frees the LLStandardSignal aka boost::signals2::signal instance owned by the LLEventPump, perforce disconnecting all current listeners and disabling the LLEventPump. Even though the instance still exists, if someone subsequently calls post(), nothing will happen -- which is better than control trying to reach a method of a deleted object.master
parent
5ec81cf0f7
commit
aea1e46982
|
|
@ -266,6 +266,9 @@ LLEventPumps::~LLEventPumps()
|
|||
{
|
||||
delete *mOurPumps.begin();
|
||||
}
|
||||
// Reset every remaining registered LLEventPump subclass instance: those
|
||||
// we DIDN'T instantiate using either make() or obtain().
|
||||
reset();
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
|
|
|||
Loading…
Reference in New Issue