MAINT-870 Fix for crash from out of control lawns.
parent
f96a6aad6b
commit
484994b43b
|
|
@ -1207,10 +1207,10 @@ void LLVertexBuffer::updateNumVerts(S32 nverts)
|
|||
|
||||
llassert(nverts >= 0);
|
||||
|
||||
if (nverts >= 65535)
|
||||
if (nverts > 65536)
|
||||
{
|
||||
llwarns << "Vertex buffer overflow!" << llendl;
|
||||
nverts = 65535;
|
||||
nverts = 65536;
|
||||
}
|
||||
|
||||
U32 needed_size = calcOffsets(mTypeMask, mOffsets, nverts);
|
||||
|
|
|
|||
|
|
@ -447,14 +447,21 @@ void LLParticlePartition::addGeometryCount(LLSpatialGroup* group, U32& vertex_co
|
|||
continue;
|
||||
}
|
||||
|
||||
count++;
|
||||
facep->mDistance = (facep->mCenterLocal - camera->getOrigin()) * camera->getAtAxis();
|
||||
obj->mDepth += facep->mDistance;
|
||||
if ((facep->getGeomCount() + vertex_count) <= 65536)
|
||||
{
|
||||
count++;
|
||||
facep->mDistance = (facep->mCenterLocal - camera->getOrigin()) * camera->getAtAxis();
|
||||
obj->mDepth += facep->mDistance;
|
||||
|
||||
mFaceList.push_back(facep);
|
||||
vertex_count += facep->getGeomCount();
|
||||
index_count += facep->getIndicesCount();
|
||||
llassert(facep->getIndicesCount() < 65536);
|
||||
mFaceList.push_back(facep);
|
||||
vertex_count += facep->getGeomCount();
|
||||
index_count += facep->getIndicesCount();
|
||||
llassert(facep->getIndicesCount() < 65536);
|
||||
}
|
||||
else
|
||||
{
|
||||
facep->clearVertexBuffer();
|
||||
}
|
||||
}
|
||||
|
||||
obj->mDepth /= count;
|
||||
|
|
|
|||
|
|
@ -5089,6 +5089,7 @@ void LLGeometryManager::addGeometryCount(LLSpatialGroup* group, U32 &vertex_coun
|
|||
mFaceList.clear();
|
||||
|
||||
//for each drawable
|
||||
|
||||
for (LLSpatialGroup::element_iter drawable_iter = group->getData().begin(); drawable_iter != group->getData().end(); ++drawable_iter)
|
||||
{
|
||||
LLDrawable* drawablep = *drawable_iter;
|
||||
|
|
@ -5109,11 +5110,14 @@ void LLGeometryManager::addGeometryCount(LLSpatialGroup* group, U32 &vertex_coun
|
|||
//sum up face verts and indices
|
||||
drawablep->updateFaceSize(i);
|
||||
LLFace* facep = drawablep->getFace(i);
|
||||
if (facep->hasGeometry() && facep->getPixelArea() > FORCE_CULL_AREA)
|
||||
|
||||
|
||||
if (facep->hasGeometry() && facep->getPixelArea() > FORCE_CULL_AREA &&
|
||||
facep->getGeomCount() + vertex_count <= 65536)
|
||||
{
|
||||
vertex_count += facep->getGeomCount();
|
||||
index_count += facep->getIndicesCount();
|
||||
llassert(facep->getIndicesCount() < 65536);
|
||||
|
||||
//remember face (for sorting)
|
||||
mFaceList.push_back(facep);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue