diff --git a/trunk/fcl/src/collision.cpp b/trunk/fcl/src/collision.cpp
index 54ee44ba7410e45e69ceabb48246d9a04e0ddf19..fc129af26bd7c234228a4f4b271c2a3ac0819d0c 100644
--- a/trunk/fcl/src/collision.cpp
+++ b/trunk/fcl/src/collision.cpp
@@ -43,7 +43,6 @@
 namespace fcl
 {
 
-
 static CollisionFunctionMatrix CollisionFunctionLookTable;
 
 int collide(const CollisionObject* o1, const CollisionObject* o2,
@@ -62,6 +61,12 @@ int collide(const CollisionObject* o1, const CollisionObject* o2,
   const OBJECT_TYPE object_type2 = o2->getObjectType();
   const NODE_TYPE node_type2 = o2->getNodeType();
 
+  if(!CollisionFunctionLookTable.collision_matrix[node_type1][node_type2])
+  {
+    std::cerr << "Warning: collision function between node type " << node_type1 << " and node type " << node_type2 << " is not supported"<< std::endl;
+    return 0;
+  }
+
 
   if(object_type1 == OT_GEOM && object_type2 == OT_GEOM)
   {
diff --git a/trunk/fcl/test/test_core_broad_phase.cpp b/trunk/fcl/test/test_core_broad_phase.cpp
index 64b585aa38fbb67a48fc8a09a0682da30f7c1e4f..5a6f91afee76e7499d0455e8fb746ec7e859ab16 100644
--- a/trunk/fcl/test/test_core_broad_phase.cpp
+++ b/trunk/fcl/test/test_core_broad_phase.cpp
@@ -126,6 +126,7 @@ TEST(test_core, broad_phase_collision)
     ASSERT_TRUE(query_res1 == query_res4);
   }
 
+
   for(unsigned int i = 0; i < env.size(); ++i)
     delete env[i];
   for(unsigned int i = 0; i < query.size(); ++i)