- // At root obey the "searchmoves" option and skip moves not listed in Root
- // Move List. As a consequence any illegal move is also skipped. In MultiPV
- // mode we also skip PV moves which have been already searched.
- if (rootNode && !std::count(thisThread->rootMoves.begin() + thisThread->PVIdx,
- thisThread->rootMoves.end(), move))
- continue;
+ if (rootNode)
+ {
+ // At root obey the "searchmoves" option and skip moves not listed in Root
+ // Move List. As a consequence any illegal move is also skipped.
+ if (!std::count(thisThread->rootMoves.begin() + thisThread->PVIdx,
+ thisThread->rootMoves.end(), move))
+ continue;
+
+ // In MultiPV mode we not only skip PV moves which have already been searched,
+ // but also any other move except we have reached the last PV line.
+ if ( thisThread->PVIdx + 1 < thisThread->multiPV
+ && move != ttMove)
+ continue;
+ }