diff --git a/src/obj/NiSkinPartition.cpp b/src/obj/NiSkinPartition.cpp index 492fbc17bb5cbbe0ab97760aca51841efac8bc9f..9f188a4a336da3ef5dd6e97c24221f99d69ed221 100644 --- a/src/obj/NiSkinPartition.cpp +++ b/src/obj/NiSkinPartition.cpp @@ -642,10 +642,13 @@ void NiSkinPartition::SetTriangles( int partition, const vector<Triangle> & in ) if ( in.size() > 65535 || in.size() < 0 ) { throw runtime_error("Invalid Triangle Count: must be between 0 and 65535."); } + if ( partition < 0 || partition >= numSkinPartitionBlocks) { + throw runtime_error("Invalid partition number."); + }; SkinPartition& part = skinPartitionBlocks[partition]; part.triangles = in; part.hasFaces = (in.size() > 0) ? true : (part.strips.size() != 0); - part.numTriangles = (unsigned int)(in.size()) * 3; + part.numTriangles = (unsigned short)(in.size()); } NiSkinPartition::NiSkinPartition(Ref<NiTriBasedGeom> shape) {