diff options
author | andreykproductengine <andreykproductengine@lindenlab.com> | 2019-05-13 18:53:11 +0300 |
---|---|---|
committer | andreykproductengine <andreykproductengine@lindenlab.com> | 2019-05-13 18:53:11 +0300 |
commit | 493cf89fd590b8acad0589e895c2445086b56afd (patch) | |
tree | fb5a90134177d0aff11e05097c0b9ef7e919f486 /indra/llmath/lloctree.h | |
parent | f46969fec7ef4b2c7e4430d3d94a649cce337891 (diff) |
SL-6306 Viewer freeze and crash on octree
Diffstat (limited to 'indra/llmath/lloctree.h')
-rw-r--r-- | indra/llmath/lloctree.h | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/indra/llmath/lloctree.h b/indra/llmath/lloctree.h index 280d2653d3..0e2f62f9db 100644 --- a/indra/llmath/lloctree.h +++ b/indra/llmath/lloctree.h @@ -401,7 +401,7 @@ public: child->insert(data); } } - else + else if (parent) { //it's not in here, give it to the root OCT_ERRS << "Octree insertion failed, starting over from root!" << LL_ENDL; @@ -416,6 +416,13 @@ public: node->insert(data); } + else + { + // It's not in here, and we are root. + // LLOctreeRoot::insert() should have expanded + // root by now, something is wrong + OCT_ERRS << "Octree insertion failed! Root expansion failed." << LL_ENDL; + } return false; } @@ -763,10 +770,15 @@ public: { LLOctreeNode<T>::insert(data); } - else + else if (node->isInside(data->getPositionGroup())) { node->insert(data); } + else + { + // calling node->insert(data) will return us to root + OCT_ERRS << "Failed to insert data at child node" << LL_ENDL; + } } else if (this->getChildCount() == 0) { |