Fix bug in sending "usermove" when forcing book moves
authorH.G. Muller <h.g.muller@hccnet.nl>
Sun, 9 May 2010 20:07:30 +0000 (22:07 +0200)
committerH.G. Muller <h.g.muller@hccnet.nl>
Sun, 9 May 2010 20:12:54 +0000 (22:12 +0200)
The keyword "usermove" was copied to the buffer, but not sent before it
was overwritten by the actual book move.

backend.c

index 53799ec..36a7ea2 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -6962,8 +6962,7 @@ char *SendMoveToBookUser(int moveNr, ChessProgramState *cps, int initial)
        // after a book hit we never send 'go', and the code after the call to this routine
        // has '&& !bookHit' added to suppress potential sending there (based on 'firstMove').
        char buf[MSG_SIZ];
-       if (cps->useUsermove) sprintf(buf, "usermove "); // sorry, no SAN yet :(
-       sprintf(buf, "%s\n", bookHit); // force book move into program supposed to play it
+       sprintf(buf, "%s%s\n", (cps->useUsermove ? "usermove " : ""), bookHit); // force book move into program supposed to play it
        SendToProgram(buf, cps);
        if(!initial) firstMove = FALSE; // normally we would clear the firstMove condition after return & sending 'go'
     } else if(initial) { // 'go' was needed irrespective of firstMove, and it has to be done in this routine