From 2655f93c322c69c9ad85bd4be69d545c05e9260a Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Sun, 11 Oct 2009 18:30:35 +0200 Subject: [PATCH] Fix x-ray attack from behind in evaluate_passed_pawns() Fix a condition for x-ray attack of a queen or a rook behind a pawn of us. Previous condition does not check if the enemy slider behind our pawn is really attacking the pawn. Signed-off-by: Marco Costalba --- src/evaluate.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 9cf33b15..9007e9c7 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -940,8 +940,8 @@ namespace { // If there is an enemy rook or queen attacking the pawn from behind, // add all X-ray attacks by the rook or queen. - if ( bit_is_set(ei.attacked_by(Them, ROOK) | ei.attacked_by(Them, QUEEN), s) - && (squares_behind(Us, s) & pos.pieces(ROOK, QUEEN, Them))) + if ( (squares_behind(Us, s) & pos.pieces(ROOK, QUEEN, Them)) + && (squares_behind(Us, s) & pos.pieces(ROOK, QUEEN, Them) & pos.attacks_from(s))) b3 = b2; // Are any of the squares in the pawn's path attacked or occupied by the enemy? -- 2.39.2