From a8b93f610b613be51a65986431e70c92625e340f Mon Sep 17 00:00:00 2001 From: H.G.Muller Date: Sun, 3 Jan 2016 12:38:18 +0100 Subject: [PATCH] Let parsing of O-O castlings pay attention to castling rank The parser assumed O-O and O-O-O castlings would always take place on the back rank, even when the newly introduced castlingRank array specified differently. --- parser.c | 8 ++++---- parser.h | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/parser.c b/parser.c index 91c8edd..7235cae 100644 --- a/parser.c +++ b/parser.c @@ -619,12 +619,12 @@ badMove:// we failed to find algebraic move if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */ if (wom) { - rf = 0; - rt = 0; + rf = castlingRank[0]; + rt = castlingRank[0]; king = WhiteKing; } else { - rf = BOARD_HEIGHT-1; - rt = BOARD_HEIGHT-1; + rf = castlingRank[3]; + rt = castlingRank[3]; king = BlackKing; } ff = (BOARD_WIDTH-1)>>1; // this would be d-file diff --git a/parser.h b/parser.h index cd52f6b..2147f3c 100644 --- a/parser.h +++ b/parser.h @@ -63,3 +63,5 @@ extern char *yy_text; /* Needed because yytext can be either a char[] or a (non-constant) char* */ extern int yyoffset P((void)); extern signed char initialRights[BOARD_FILES]; +extern signed char castlingRank[BOARD_FILES]; + -- 1.7.0.4