[Bf-blender-cvs] [5cb7c07] fracture_modifier: attempt to fix some (stack overflow related ?) crashes
Martin Felke
noreply at git.blender.org
Mon Oct 26 15:37:21 CET 2015
Commit: 5cb7c07e31c936d09adbf74298e424207d78db71
Author: Martin Felke
Date: Mon Oct 26 15:34:40 2015 +0100
Branches: fracture_modifier
https://developer.blender.org/rB5cb7c07e31c936d09adbf74298e424207d78db71
attempt to fix some (stack overflow related ?) crashes
===================================================================
M extern/bullet2/src/BulletDynamics/Dynamics/btFractureDynamicsWorld.cpp
===================================================================
diff --git a/extern/bullet2/src/BulletDynamics/Dynamics/btFractureDynamicsWorld.cpp b/extern/bullet2/src/BulletDynamics/Dynamics/btFractureDynamicsWorld.cpp
index 1788392..1bb8588 100644
--- a/extern/bullet2/src/BulletDynamics/Dynamics/btFractureDynamicsWorld.cpp
+++ b/extern/bullet2/src/BulletDynamics/Dynamics/btFractureDynamicsWorld.cpp
@@ -840,9 +840,9 @@ void btFractureDynamicsWorld::propagateDamage(btFractureBody *body, btScalar *im
//min break impulse, todo expose
if (*impulse > body->m_propagationParameter.m_minimum_impulse && body->m_connections.size() > connection_index)
{
- btConnection& connection = body->m_connections[connection_index];
- btCollisionShape* shape0 = connection.m_childShape0;
- btCollisionShape* shape1 = connection.m_childShape1;
+ btConnection* connection = &body->m_connections[connection_index];
+ btCollisionShape* shape0 = connection->m_childShape0;
+ btCollisionShape* shape1 = connection->m_childShape1;
btRigidBody *fbody0 = m_shapeBodyCallback(shape0->getUserPointer());
btRigidBody *fbody1 = m_shapeBodyCallback(shape1->getUserPointer());
@@ -850,19 +850,19 @@ void btFractureDynamicsWorld::propagateDamage(btFractureBody *body, btScalar *im
//calculate dot product between body->fbody and direction, if > say 0.75 then roughly same direction ?
btScalar factor = body->m_propagationParameter.m_directional_factor;
- btVector3 dir = fbody0->getWorldTransform().getOrigin() - fbody1->getWorldTransform().getOrigin();
+ const btVector3& dir = fbody0->getWorldTransform().getOrigin() - fbody1->getWorldTransform().getOrigin();
if (dir.dot(direction) > factor)
{
//printf("FACTOR: %f\n", dir.dot(direction));
- connection.m_strength -= *impulse;
+ connection->m_strength -= *impulse;
//printf("strengthp=%f %f\n",connection.m_strength, *impulse);
- if (connection.m_strength<0)
+ if (connection->m_strength<0)
{
//remove or set to zero
//printf("Breaking: %d %d\n",connection.m_childIndex0, connection.m_childIndex1);
- connection.m_strength=0.f;
+ connection->m_strength=0.f;
*needsBreakingCheck = true;
}
}
@@ -876,7 +876,7 @@ void btFractureDynamicsWorld::propagateDamage(btFractureBody *body, btScalar *im
int i, size = adjacents->size();
for (i=0;i<size;i++)
{
- if (size > 1)
+ if(size > 2)
propagateDamage(body, impulse, adjacents->at(i), needsBreakingCheck, direction);
}
}
More information about the Bf-blender-cvs
mailing list