From eed11d5d74cb5baa14feb771362f4c4bc4a97143 Mon Sep 17 00:00:00 2001
From: Amorilia <amorilia@users.sourceforge.net>
Date: Sat, 17 Sep 2011 09:30:38 +0100
Subject: [PATCH] Simpler solution for range error with skin partition number.

---
 src/obj/NiSkinPartition.cpp | 5 +----
 test/skinpart_test.cpp      | 2 +-
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/obj/NiSkinPartition.cpp b/src/obj/NiSkinPartition.cpp
index 9f188a4a..b2cfb41e 100644
--- a/src/obj/NiSkinPartition.cpp
+++ b/src/obj/NiSkinPartition.cpp
@@ -642,10 +642,7 @@ 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];
+   SkinPartition& part = skinPartitionBlocks.at(partition); // at throws, [] does not
    part.triangles = in;
    part.hasFaces = (in.size() > 0) ? true : (part.strips.size() != 0);
    part.numTriangles = (unsigned short)(in.size());
diff --git a/test/skinpart_test.cpp b/test/skinpart_test.cpp
index 2ca9bd01..27e8d095 100644
--- a/test/skinpart_test.cpp
+++ b/test/skinpart_test.cpp
@@ -105,7 +105,7 @@ BOOST_AUTO_TEST_CASE(skinpart_triangles_partnum_test)
   verts.push_back(Vector3(0, 1, 0));
   verts.push_back(Vector3(0, 0, 1));
   tris.push_back(Triangle(0, 1, 2));
-  BOOST_CHECK_THROW(skinpart->SetTriangles(5, tris), std::runtime_error);
+  BOOST_CHECK_THROW(skinpart->SetTriangles(5, tris), std::out_of_range);
   BOOST_CHECK_NO_THROW(skinpart->SetTriangles(0, tris));
 }
 
-- 
GitLab