Suppress clear-board message after pasting FEN
[xboard.git] / backend.c
index 593398e..20e5efc 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -1252,7 +1252,7 @@ GetTimeQuota (int movenr, int lastUsed, char *tcString)
     long time, increment;
     char *s = tcString;
 
-    if(!*s) return 0; // empty TC string means we ran out of the last sudden-death version
+    if(!s || !*s) return 0; // empty TC string means we ran out of the last sudden-death version
     do {
         if(moves) NextSessionFromString(&s, &moves, &time, &increment, &incType);
         nextSession = s; suddenDeath = moves == 0 && increment == 0;
@@ -6192,12 +6192,12 @@ UpdateExcludeHeader (int fromY, int fromX, int toY, int toX, char promoChar, cha
 }
 
 static int
-ExcludeOneMove (int fromY, int fromX, int toY, int toX, signed char promoChar, char state)
+ExcludeOneMove (int fromY, int fromX, int toY, int toX, char promoChar, char state)
 {   // include or exclude the given move, as specified by state ('+' or '-'), or toggle
     char buf[MSG_SIZ];
     int j, k;
     ChessMove moveType;
-    if(promoChar == -1) { // kludge to indicate best move
+    if((signed char)promoChar == -1) { // kludge to indicate best move
        if(!ParseOneMove(lastPV[0], currentMove, &moveType, &fromX, &fromY, &toX, &toY, &promoChar)) // get current best move from last PV
            return 1; // if unparsable, abort
     }
@@ -13932,11 +13932,11 @@ EditPositionDone (Boolean fakeRights)
       boards[0][EP_STATUS] = EP_NONE;
       boards[0][CASTLING][2] = boards[0][CASTLING][5] = BOARD_WIDTH>>1;
     if(boards[0][0][BOARD_WIDTH>>1] == king) {
-       boards[0][CASTLING][1] = boards[0][0][BOARD_LEFT] == WhiteRook ? 0 : NoRights;
+       boards[0][CASTLING][1] = boards[0][0][BOARD_LEFT] == WhiteRook ? BOARD_LEFT : NoRights;
        boards[0][CASTLING][0] = boards[0][0][BOARD_RGHT-1] == WhiteRook ? BOARD_RGHT-1 : NoRights;
       } else boards[0][CASTLING][2] = NoRights;
     if(boards[0][BOARD_HEIGHT-1][BOARD_WIDTH>>1] == WHITE_TO_BLACK king) {
-       boards[0][CASTLING][4] = boards[0][BOARD_HEIGHT-1][BOARD_LEFT] == BlackRook ? 0 : NoRights;
+       boards[0][CASTLING][4] = boards[0][BOARD_HEIGHT-1][BOARD_LEFT] == BlackRook ? BOARD_LEFT : NoRights;
        boards[0][CASTLING][3] = boards[0][BOARD_HEIGHT-1][BOARD_RGHT-1] == BlackRook ? BOARD_RGHT-1 : NoRights;
       } else boards[0][CASTLING][5] = NoRights;
     }
@@ -13954,6 +13954,7 @@ EditPositionDone (Boolean fakeRights)
         fprintf(debugFP, "EditPosDone\n");
     }
     DisplayTitle("");
+    DisplayMessage("", "");
     timeRemaining[0][forwardMostMove] = whiteTimeRemaining;
     timeRemaining[1][forwardMostMove] = blackTimeRemaining;
     gameMode = EditGame;