diff options
-rw-r--r-- | indra/newview/pipeline.cpp | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 368e78dc43..318d5d5ca1 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -1977,16 +1977,25 @@ void LLPipeline::markVisible(LLDrawable *drawablep, LLCamera& camera) { if (drawablep->isSpatialBridge()) { - LLDrawable* root = ((LLSpatialBridge*) drawablep)->mDrawable; - llassert(root); - if (root->getVObj()->isAttachment()) + const LLDrawable* root = ((LLSpatialBridge*) drawablep)->mDrawable; + llassert(root); // trying to catch a bad assumption + if (root && // // this test may not be needed, see above + root->getVObj()->isAttachment()) { - llassert(root->getParent()); - llassert(root->getParent()->getVObj()); - LLVOAvatar* av = root->getParent()->getVObj()->asAvatar(); - if (av && av->isImpostor()) + LLDrawable* rootparent = root->getParent(); + llassert(rootparent); // trying to catch a bad assumption + if (rootparent) // this test may not be needed, see above { - return; + LLViewerObject *vobj = rootparent->getVObj(); + llassert(vobj); // trying to catch a bad assumption + if (vobj) // this test may not be needed, see above + { + const LLVOAvatar* av = vobj->asAvatar(); + if (av && av->isImpostor()) + { + return; + } + } } } sCull->pushBridge((LLSpatialBridge*) drawablep); |