From: H.G. Muller Date: Wed, 29 Jun 2011 11:36:26 +0000 (+0200) Subject: Fix drop moves on boards with more than 10 ranks X-Git-Url: http://winboard.nl/cgi-bin?a=commitdiff_plain;h=d9236358bbc4eea6a967503078ac6fc6a881d1da;p=xboard.git Fix drop moves on boards with more than 10 ranks The internal encoding for rank 16 is '@', and thus ambiguous with drop moves. They were always printed as 16, breaking drop games on large boards. The ambiguity is now solved (for boards with more than 16 ranks) by checking if the preceeding letter is upper case, in which case it cannot be a fileindicator, but must be a piece, and thus a drop. --- diff --git a/backend.c b/backend.c index b5e5830..cc5fb3a 100644 --- a/backend.c +++ b/backend.c @@ -4899,8 +4899,12 @@ SendMoveToProgram(moveNum, cps) else SendToProgram(moveList[moveNum], cps); } else if(BOARD_HEIGHT > 10) { // [HGM] big: convert ranks to double-digit where needed - snprintf(buf, MSG_SIZ, "%c%d%c%d%s", moveList[moveNum][0], moveList[moveNum][1] - '0', - moveList[moveNum][2], moveList[moveNum][3] - '0', moveList[moveNum]+4); + if(moveList[moveNum][1] == '@' && (BOARD_HEIGHT < 16 || moveList[moveNum][0] <= 'Z')) { // drop move + snprintf(buf, MSG_SIZ, "%c@%c%d%s", moveList[moveNum][0], + moveList[moveNum][2], moveList[moveNum][3] - '0', moveList[moveNum]+4); + } else + snprintf(buf, MSG_SIZ, "%c%d%c%d%s", moveList[moveNum][0], moveList[moveNum][1] - '0', + moveList[moveNum][2], moveList[moveNum][3] - '0', moveList[moveNum]+4); SendToProgram(buf, cps); } else SendToProgram(moveList[moveNum], cps);