]> git.sesse.net Git - stockfish/commitdiff
Prevent infinite loops on repetitions.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sat, 19 Mar 2016 21:22:40 +0000 (22:22 +0100)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Wed, 26 Dec 2018 09:43:37 +0000 (10:43 +0100)
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);