X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fposition.cpp;h=2b50ff2ae258df7a49eb0d892b79511d41e31908;hp=d37d35b4261fef1d8418f608e890d627c76e9c01;hb=9e4befe3f1ea324bece88aee2e97b38659411c52;hpb=e9aa20ad132b569c7a9e60322a25aeef94a3375a diff --git a/src/position.cpp b/src/position.cpp index d37d35b4..2b50ff2a 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -886,6 +886,8 @@ void Position::do_move(Move m, StateInfo& newSt, Bitboard dcCandidates) { st->mgValue += (sideToMove == WHITE)? TempoValueMidgame : -TempoValueMidgame; st->egValue += (sideToMove == WHITE)? TempoValueEndgame : -TempoValueEndgame; + + assert(is_ok()); } @@ -953,7 +955,6 @@ void Position::do_capture_move(Bitboard& key, PieceType capture, Color them, Squ void Position::do_castle_move(Move m) { - assert(is_ok()); assert(move_is_ok(m)); assert(move_is_castle(m)); @@ -1042,6 +1043,8 @@ void Position::do_castle_move(Move m) { st->mgValue += (sideToMove == WHITE)? TempoValueMidgame : -TempoValueMidgame; st->egValue += (sideToMove == WHITE)? TempoValueEndgame : -TempoValueEndgame; + + assert(is_ok()); } @@ -1146,6 +1149,8 @@ void Position::undo_move(Move m) { // Finally point our state pointer back to the previous state st = st->previous; + + assert(is_ok()); } @@ -1210,6 +1215,8 @@ void Position::undo_castle_move(Move m) { // Finally point our state pointer back to the previous state st = st->previous; + + assert(is_ok()); } @@ -1689,7 +1696,7 @@ bool Position::is_mate() const { MoveStack moves[256]; - return is_check() && !generate_evasions(*this, moves, pinned_pieces(sideToMove)); + return is_check() && (generate_evasions(*this, moves, pinned_pieces(sideToMove)) == moves); } @@ -1709,20 +1716,18 @@ bool Position::has_mate_threat(Color c) { do_null_move(st1); MoveStack mlist[120]; - int count; bool result = false; Bitboard dc = discovered_check_candidates(sideToMove); Bitboard pinned = pinned_pieces(sideToMove); // Generate pseudo-legal non-capture and capture check moves - count = generate_non_capture_checks(*this, mlist, dc); - count += generate_captures(*this, mlist + count); + MoveStack* last = generate_non_capture_checks(*this, mlist, dc); + last = generate_captures(*this, last); // Loop through the moves, and see if one of them is mate - for (int i = 0; i < count; i++) + for (MoveStack* cur = mlist; cur != last; cur++) { - Move move = mlist[i].move; - + Move move = cur->move; if (!pl_move_is_legal(move, pinned)) continue;