Skip to content

Commit

Permalink
Avoid misuse of StepAttacksBB for pawns
Browse files Browse the repository at this point in the history
Make it explicit that first index of StepAttacksBB is a piece, not a piece type.

No functional change

Closes #1083
  • Loading branch information
snicolet authored and zamar committed Apr 26, 2017
1 parent d06a8d0 commit 49a9d4c
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/bitbase.cpp
Expand Up @@ -117,7 +117,7 @@ namespace {
if ( distance(ksq[WHITE], ksq[BLACK]) <= 1
|| ksq[WHITE] == psq
|| ksq[BLACK] == psq
|| (us == WHITE && (StepAttacksBB[PAWN][psq] & ksq[BLACK])))
|| (us == WHITE && (StepAttacksBB[W_PAWN][psq] & ksq[BLACK])))
result = INVALID;

// Immediate win if a pawn can be promoted without getting captured
Expand All @@ -130,7 +130,7 @@ namespace {

// Immediate draw if it is a stalemate or a king captures undefended pawn
else if ( us == BLACK
&& ( !(StepAttacksBB[KING][ksq[us]] & ~(StepAttacksBB[KING][ksq[~us]] | StepAttacksBB[PAWN][psq]))
&& ( !(StepAttacksBB[KING][ksq[us]] & ~(StepAttacksBB[KING][ksq[~us]] | StepAttacksBB[W_PAWN][psq]))
|| (StepAttacksBB[KING][ksq[us]] & psq & ~StepAttacksBB[KING][ksq[~us]])))
result = DRAW;

Expand Down
1 change: 1 addition & 0 deletions src/position.h
Expand Up @@ -273,6 +273,7 @@ inline Square Position::castling_rook_square(CastlingRight cr) const {

template<PieceType Pt>
inline Bitboard Position::attacks_from(Square s) const {
assert(Pt != PAWN);
return Pt == BISHOP || Pt == ROOK ? attacks_bb<Pt>(s, byTypeBB[ALL_PIECES])
: Pt == QUEEN ? attacks_from<ROOK>(s) | attacks_from<BISHOP>(s)
: StepAttacksBB[Pt][s];
Expand Down

0 comments on commit 49a9d4c

Please sign in to comment.