summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Kleshchev <117672381+akleshchev@users.noreply.github.com>2026-08-19 01:18:48 +0300
committerAndrey Kleshchev <117672381+akleshchev@users.noreply.github.com>2026-08-19 17:21:49 +0300
commit1c1e8e07d33b9c02d2e312d76c3b9ea5c5ce2442 (patch)
tree368dc2969517f6f64eb0c3844946d20201d523a6
parentc1ccfaed5ba8c07c8b9e9d28cfca1e6806497ae0 (diff)
#6148 Crash at LLViewerRegion::addNewObject
-rw-r--r--indra/newview/llviewerregion.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 5f73d8e901..13477f0e16 100644
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -1891,8 +1891,17 @@ LLViewerObject* LLViewerRegion::addNewObject(LLVOCacheEntry* entry)
}
else
{
- LLViewerRegion* old_regionp = ((LLDrawable*)entry->getEntry()->getDrawable())->getRegion();
- if(old_regionp != this)
+ LLDrawable* drawablep = (LLDrawable*)entry->getEntry()->getDrawable();
+ if (!drawablep || drawablep->isDead() || drawablep->getVObj().isNull())
+ {
+ LL_WARNS() << "Entry: " << entry->getLocalID() << " has a dead or invalid drawable; resetting to inactive." << LL_ENDL;
+ mImpl->mVisibleEntries.erase(entry);
+ entry->setState(LLVOCacheEntry::INACTIVE);
+ return NULL;
+ }
+
+ LLViewerRegion* old_regionp = drawablep->getRegion();
+ if (old_regionp != this)
{
//this object exists in two regions at the same time;
//this case can be safely ignored here because