Fix gating on corner squares
[capablanca.git] / lasker-2.2.3 / src / movecheck.c
index d575915..e9b3a15 100644 (file)
@@ -1710,7 +1710,7 @@ static int move_calculate(struct game_state_t * gs, struct move_t * mt, int prom
     for (i = g->numHalfMoves-1; i >= 0; i--) {
       if (g->moveList[i].fromFile == mt->fromFile && g->moveList[i].fromRank == mt->fromRank ||
           g->moveList[i].toFile   == mt->fromFile && g->moveList[i].toRank   == mt->fromRank ||
-         g->moveList[i].fromFile == ALG_CASTLE && (gs->onMove == WHITE ? 0 : gs->ranks-1) == mt->fromRank &&
+         g->moveList[i].fromFile == ALG_CASTLE && (i&1 ? gs->ranks-1 : 0) == mt->fromRank &&
                 (g->moveList[i].fromRank == mt->fromFile || gs->files>>1 == mt->fromFile )) return MOVE_ILLEGAL;
     }
     mt->piecePromotionTo = promote; // gating OK