diff options
author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2022-12-07 19:33:12 +0200 |
---|---|---|
committer | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2022-12-07 19:33:47 +0200 |
commit | 823dbc880540a789c5768930e0dffafd7c4a0269 (patch) | |
tree | 9d65674d2627a37006cb61c2bd5a8252b3d3247f | |
parent | 71926db3a5bed6d4984619b4e587402c9e556516 (diff) |
SL-18801 Crash at LLPluginProcessParent::pollTick()
Looks like pollTick tried to call an already dead process
-rw-r--r-- | indra/llcommon/llprocess.cpp | 8 | ||||
-rw-r--r-- | indra/llplugin/llpluginprocessparent.cpp | 5 | ||||
-rw-r--r-- | indra/newview/llviewerobjectlist.cpp | 5 |
3 files changed, 17 insertions, 1 deletions
diff --git a/indra/llcommon/llprocess.cpp b/indra/llcommon/llprocess.cpp index 23936f0526..97a38ea992 100644 --- a/indra/llcommon/llprocess.cpp +++ b/indra/llcommon/llprocess.cpp @@ -272,6 +272,14 @@ public: boost::bind(&ReadPipeImpl::tick, this, _1)); } + ~ReadPipeImpl() + { + if (mConnection.connected()) + { + mConnection.disconnect(); + } + } + // Much of the implementation is simply connecting the abstract virtual // methods with implementation data concealed from the base class. virtual std::istream& get_istream() { return mStream; } diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp index 1fbbad06d4..756d0b5db8 100644 --- a/indra/llplugin/llpluginprocessparent.cpp +++ b/indra/llplugin/llpluginprocessparent.cpp @@ -162,6 +162,11 @@ LLPluginProcessParent::~LLPluginProcessParent() { // If we are quitting, the network sockets will already have been destroyed. killSockets(); } + + if (mPolling.connected()) + { + mPolling.disconnect(); + } } /*static*/ diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index e930b58111..efc4ded79e 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -815,7 +815,10 @@ void LLViewerObjectList::updateApparentAngles(LLAgent &agent) { virtual bool apply(LLViewerObject* objectp) { - objectp->boostTexturePriority(); + if (objectp) + { + objectp->boostTexturePriority(); + } return true; } } func; |