diff options
| author | Andrey Kleshchev <117672381+akleshchev@users.noreply.github.com> | 2026-08-19 01:18:48 +0300 |
|---|---|---|
| committer | Andrey Kleshchev <117672381+akleshchev@users.noreply.github.com> | 2026-08-19 17:21:49 +0300 |
| commit | 1c1e8e07d33b9c02d2e312d76c3b9ea5c5ce2442 (patch) | |
| tree | 368dc2969517f6f64eb0c3844946d20201d523a6 /indra/newview/llviewerregion.cpp | |
| parent | c1ccfaed5ba8c07c8b9e9d28cfca1e6806497ae0 (diff) | |
#6148 Crash at LLViewerRegion::addNewObject
Diffstat (limited to 'indra/newview/llviewerregion.cpp')
| -rw-r--r-- | indra/newview/llviewerregion.cpp | 13 |
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 |
