Browse Source

Don't crash for WNEvalPlans where N=2 and nthreads>1

This can happen if you have a large number of threads relative to the
number of elements to be shuffled/sorted
Ian Goldberg 1 year ago
parent
commit
df7e017f7f
1 changed files with 6 additions and 4 deletions
  1. 6 4
      Enclave/OblivAlgs/WaksmanNetwork.hpp

+ 6 - 4
Enclave/OblivAlgs/WaksmanNetwork.hpp

@@ -464,10 +464,12 @@ unsigned long start = printf_with_rtclock("Thread %u starting applyInversePermut
   WNTraversal lefttraversal = traversal;
   lefttraversal.inSwitches += numInSwitches;
   lefttraversal.outSwitches += numOutSwitches;
-  traversal.inSwitches +=
-    plan.subplans[0].subtree_num_inswitches + numInSwitches;
-  traversal.outSwitches +=
-    plan.subplans[0].subtree_num_outswitches + numOutSwitches;
+  traversal.inSwitches += numInSwitches;
+  traversal.outSwitches += numOutSwitches;
+  if (plan.subplans.size() > 0) {
+    traversal.inSwitches += plan.subplans[0].subtree_num_inswitches;
+    traversal.outSwitches += plan.subplans[0].subtree_num_outswitches;
+  }
 
 #ifdef SHOW_APPLYPERM
   printf("s");