diff --git a/indra/llmath/lltreenode.h b/indra/llmath/lltreenode.h index c66bc26176130730e5da24c4cc0d0eb1e04ffe4e..0b479c4564fe6aa4946e87400b83e9985a5650d6 100755 --- a/indra/llmath/lltreenode.h +++ b/indra/llmath/lltreenode.h @@ -57,7 +57,14 @@ class LLTreeNode virtual bool remove(T* data); virtual void notifyRemoval(T* data); virtual U32 getListenerCount() { return mListeners.size(); } - virtual LLTreeListener<T>* getListener(U32 index) const { return mListeners[index]; } + virtual LLTreeListener<T>* getListener(U32 index) const + { + if(index < mListeners.size()) + { + return mListeners[index]; + } + return NULL; + } virtual void addListener(LLTreeListener<T>* listener) { mListeners.push_back(listener); } protected: diff --git a/indra/newview/llvieweroctree.cpp b/indra/newview/llvieweroctree.cpp index 47033afea3dbf861efe0ae0e7c49cff92b8a8b11..e1684c19df2dd183cf4d7a20b875c28671590f92 100644 --- a/indra/newview/llvieweroctree.cpp +++ b/indra/newview/llvieweroctree.cpp @@ -957,7 +957,7 @@ class LLSpatialClearOcclusionStateDiff : public LLSpatialClearOcclusionState { LLOcclusionCullingGroup* group = (LLOcclusionCullingGroup*) n->getListener(0); - if (group->isOcclusionState(mState)) + if (group && group->isOcclusionState(mState)) { OctreeTraveler::traverse(n); }