From 32ab5d36918588e5f0bf5ac85dbee2001a2c5f5b Mon Sep 17 00:00:00 2001 From: "erwin.coumans" Date: Thu, 11 Sep 2008 00:57:53 +0000 Subject: [PATCH] fix crash in Maya plugin, trying to access elements in a zero-length positions/rotations array. --- Extras/MayaPlugin/rigidBodyArrayNode.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/Extras/MayaPlugin/rigidBodyArrayNode.cpp b/Extras/MayaPlugin/rigidBodyArrayNode.cpp index 7f74f771b..9216945f5 100644 --- a/Extras/MayaPlugin/rigidBodyArrayNode.cpp +++ b/Extras/MayaPlugin/rigidBodyArrayNode.cpp @@ -430,12 +430,19 @@ void rigidBodyArrayNode::computeRigidBodies(const MPlug& plug, MDataBlock& data) } m_rigid_bodies.resize(numBodies); - for(size_t i = 0; i < m_rigid_bodies.size(); ++i) { - m_rigid_bodies[i] = solver_t::create_rigid_body(collision_shape); - m_rigid_bodies[i]->set_transform(positions[i], rotations[i]); - solver_t::add_rigid_body(m_rigid_bodies[i]); + for(size_t i = 0; i < m_rigid_bodies.size(); ++i) { + m_rigid_bodies[i] = solver_t::create_rigid_body(collision_shape); + if (i < positions.size()) + { + m_rigid_bodies[i]->set_transform(positions[i], rotations[i]); + } else + { + m_rigid_bodies[i]->set_transform(vec3f(0.f,0.f,0.f),quatf(1.f,0.f,0.f,0.f)); + } + solver_t::add_rigid_body(m_rigid_bodies[i]); } + data.outputValue(ca_rigidBodies).set(true); data.setClean(plug); }