FIRE-14261: More fixing of crashes due to broken meshes
parent
6e858e2494
commit
a07a1a98bf
|
|
@ -1681,6 +1681,7 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace*
|
|||
{
|
||||
LLPointer<LLVertexBuffer> cur_buffer = facep->getVertexBuffer();
|
||||
const LLVolumeFace& cur_vol_face = volume->getVolumeFace(i);
|
||||
// <FS:ND> FIRE-14261 try to skip broken or out of bounds faces
|
||||
if( cur_vol_face.mNumVertices > 0x10000 || cur_vol_face.mNumVertices < 0 || cur_vol_face.mNumIndices < 0 )
|
||||
{
|
||||
LL_WARNS() << "Skipping face " << i
|
||||
|
|
@ -1689,6 +1690,7 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace*
|
|||
<< LL_ENDL;
|
||||
continue;
|
||||
}
|
||||
// </FS:ND>
|
||||
getRiggedGeometry(facep, cur_buffer, face_data_mask, skin, volume, cur_vol_face);
|
||||
}
|
||||
}
|
||||
|
|
@ -1698,7 +1700,20 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace*
|
|||
}
|
||||
else
|
||||
{ //just rebuild this face
|
||||
getRiggedGeometry(face, buffer, data_mask, skin, volume, vol_face);
|
||||
// <FS:Ansariel> FIRE-14261 try to skip broken or out of bounds faces
|
||||
//getRiggedGeometry(face, buffer, data_mask, skin, volume, vol_face);
|
||||
if (vol_face.mNumVertices <= 0x10000 && vol_face.mNumVertices >= 0 && vol_face.mNumIndices >= 0)
|
||||
{
|
||||
getRiggedGeometry(face, buffer, data_mask, skin, volume, vol_face);
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "Skipping face - "
|
||||
<< " vertices " << vol_face.mNumVertices << " indices " << vol_face.mNumIndices
|
||||
<< " face is possibly corrupted"
|
||||
<< LL_ENDL;
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue