Fix semantic of piece_attacks<PAWN>
authorMarco Costalba <mcostalba@gmail.com>
Sun, 13 Sep 2009 15:13:49 +0000 (16:13 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sun, 13 Sep 2009 15:13:49 +0000 (16:13 +0100)
Return the bitboard with the pawn attacks for both colors
so to be aligned to the meaning of the others piece_attacks<Piece>
templates.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>

src/position.cpp
src/position.h

index 8ec82be..462088e 100644 (file)
@@ -667,7 +667,7 @@ inline void Position::update_checkers(Bitboard* pCheckersBB, Square ksq, Square
 
   else if (   Piece != KING
            && !Slider
-           && bit_is_set(piece_attacks<Piece>(ksq), to))
+           && bit_is_set(Piece == PAWN ? pawn_attacks(opposite_color(sideToMove), ksq) : piece_attacks<Piece>(ksq), to))
       set_bit(pCheckersBB, to);
 
   // Discovery checks
index 0006fbc..11cdc13 100644 (file)
@@ -457,7 +457,7 @@ inline Bitboard Position::piece_attacks(Square s) const {
 
 template<>
 inline Bitboard Position::piece_attacks<PAWN>(Square s) const {
-  return StepAttackBB[piece_of_color_and_type(opposite_color(sideToMove), PAWN)][s];
+  return StepAttackBB[WP][s] | StepAttackBB[BP][s];
 }
 
 template<>