From: H.G.Muller Date: Tue, 17 Jan 2017 17:53:27 +0000 (+0100) Subject: Fix e.p. capture in ICS play X-Git-Url: http://winboard.nl/cgi-bin?p=xboard.git;a=commitdiff_plain;h=985cec56a6e655776b35dfeaf338f748808651da Fix e.p. capture in ICS play The new e.p. rights were not set when the position was obtained by parsing an ICS board, rather than from applying a move to a previous position. --- diff --git a/backend.c b/backend.c index ad19851..4537da1 100644 --- a/backend.c +++ b/backend.c @@ -4741,7 +4741,13 @@ ParseBoard12 (char *string) boards[moveNum][EP_STATUS] = EP_NONE; if(str[0] == 'P') boards[moveNum][EP_STATUS] = EP_PAWN_MOVE; if(strchr(move_str, 'x')) boards[moveNum][EP_STATUS] = EP_CAPTURE; - if(double_push != -1) boards[moveNum][EP_STATUS] = double_push + BOARD_LEFT; + if(double_push != -1) { + int dir = WhiteOnMove(moveNum) ? 1 : -1, last = BOARD_HEIGHT-1; + boards[moveNum][EP_FILE] = // also set new e.p. variables + boards[moveNum][EP_STATUS] = double_push + BOARD_LEFT; + boards[moveNum][EP_RANK] = (last + 3*dir)/2; + boards[moveNum][LAST_TO] = 128*(last + dir) + boards[moveNum][EP_FILE]; + } else boards[moveNum][EP_FILE] = boards[moveNum][EP_RANK] = 100; if (ics_getting_history == H_GOT_REQ_HEADER ||