From b09cbaebb9fad91320e723f92930b5ec6fd88e9f Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Tue, 16 Dec 2008 17:09:19 +0100 Subject: [PATCH 1/1] search_pv: an enpassant move is a capture Fix the logic in search_pv and sp_search_pv An additional issue to consider is that a castle move is not a capture but destination square is not empty. Signed-off-by: Marco Costalba --- src/search.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/search.cpp b/src/search.cpp index 72bf6e81..8e6181cc 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -1003,9 +1003,8 @@ namespace { movesSearched[moveCount++] = ss[ply].currentMove = move; if (moveIsCapture) - ss[ply].currentMoveCaptureValue = pos.midgame_value_of_piece_on(move_to(move)); - else if (move_is_ep(move)) - ss[ply].currentMoveCaptureValue = PawnValueMidgame; + ss[ply].currentMoveCaptureValue = + move_is_ep(move)? PawnValueMidgame : pos.midgame_value_of_piece_on(move_to(move)); else ss[ply].currentMoveCaptureValue = Value(0); @@ -1691,8 +1690,11 @@ namespace { assert(move_is_ok(move)); - ss[sp->ply].currentMoveCaptureValue = move_is_ep(move)? - PawnValueMidgame : pos.midgame_value_of_piece_on(move_to(move)); + if (moveIsCapture) + ss[sp->ply].currentMoveCaptureValue = + move_is_ep(move)? PawnValueMidgame : pos.midgame_value_of_piece_on(move_to(move)); + else + ss[sp->ply].currentMoveCaptureValue = Value(0); lock_grab(&(sp->lock)); int moveCount = ++sp->moves; -- 2.39.2