]> git.sesse.net Git - stockfish/blobdiff - src/main.cpp
Prevent infinite loops on repetitions.
[stockfish] / src / main.cpp
index 4be9aaf3fac5727e1db8833d8acbab4d4929275c..299b4135c8e351fa8be5895cb64d2173ec655484 100644 (file)
@@ -114,9 +114,12 @@ public:
 
                        // Follow the PV until we hit an illegal move.
                        std::stack<Move> pv;
+                       std::set<Key> seen;
                        while (found && is_ok(entry->move())) {
                                FillMove(entry->move(), response->add_pv());
+                               if (seen.count(pos->key())) break;
                                pv.push(entry->move());
+                               seen.insert(pos->key());
                                setup_states->push(StateInfo());
                                pos->do_move(entry->move(), setup_states->top(), pos->gives_check(entry->move(), CheckInfo(*pos)));
                                entry = TT.probe(pos->key(), found);