diff --git a/src/traversal/traversal_recurse.cpp b/src/traversal/traversal_recurse.cpp
index 84fb992e22131fab14272fc2a53183053179a314..cf4c822780e59276c4af07fd2fa8e1ae3730a0e0 100644
--- a/src/traversal/traversal_recurse.cpp
+++ b/src/traversal/traversal_recurse.cpp
@@ -382,7 +382,7 @@ void propagateBVHFrontListCollisionRecurse
         front_iter->valid = false;
         if(node->firstOverSecond(b1, b2)) {
           int c1 = node->getFirstLeftChild(b1);
-          int c2 = node->getFirstRightChild(b2);
+          int c2 = node->getFirstRightChild(b1);
 
           collisionRecurse(node, c1, b2, front_list, sqrDistLowerBound1);
           collisionRecurse(node, c2, b2, front_list, sqrDistLowerBound2);
diff --git a/test/frontlist.cpp b/test/frontlist.cpp
index c46aca482f7bec72544102382d5da9ef15af49f3..9762d69b272c0211a7cd12778dba22e6cc2b6fd7 100644
--- a/test/frontlist.cpp
+++ b/test/frontlist.cpp
@@ -84,7 +84,11 @@ BOOST_AUTO_TEST_CASE(front_list)
   std::vector<Transform3f> transforms2; // t1
   FCL_REAL extents[] = {-3000, -3000, 0, 3000, 3000, 3000};
   FCL_REAL delta_trans[] = {1, 1, 1};
-  std::size_t n = 10;
+#ifdef NDEBUG
+  std::size_t n = 20;
+#else
+  std::size_t n = 5;
+#endif
   bool verbose = false;
 
   generateRandomTransforms(extents, delta_trans, 0.005 * 2 * 3.1415, transforms, transforms2, n);