diff options
| -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)  		{ | 
