Erase markers before processing highlight FEN
authorH.G.Muller <hgm@hgm-xboard.(none)>
Sat, 7 May 2016 20:10:34 +0000 (22:10 +0200)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Sun, 8 May 2016 12:06:34 +0000 (14:06 +0200)
Markers from the Betza generator were only half-heartedly erased when
a color-FEN camein through a highlight command, because FENs tend to
skip empty squares in stretches. This was already fixed for the legal[][]
array, but now it is fixed for the markers itself as well.

backend.c

index 58e3f2e..241bf96 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -7399,11 +7399,10 @@ MarkByFEN(char *fen)
 {
        int r, f;
        if(!appData.markers || !appData.highlightDragging) return;
 {
        int r, f;
        if(!appData.markers || !appData.highlightDragging) return;
-       for(r=0; r<BOARD_HEIGHT; r++) for(f=BOARD_LEFT; f<BOARD_RGHT; f++) legal[r][f] = 0;
+       for(r=0; r<BOARD_HEIGHT; r++) for(f=BOARD_LEFT; f<BOARD_RGHT; f++) legal[r][f] = marker[r][f] = 0;
        r=BOARD_HEIGHT-1-deadRanks; f=BOARD_LEFT;
        while(*fen) {
            int s = 0;
        r=BOARD_HEIGHT-1-deadRanks; f=BOARD_LEFT;
        while(*fen) {
            int s = 0;
-           marker[r][f] = 0;
            if(*fen == 'M') legal[r][f] = 2; else // request promotion choice
            if(*fen == 'B') legal[r][f] = 4; else // request auto-promotion to victim
            if(*fen >= 'A' && *fen <= 'Z') legal[r][f] = 3; else
            if(*fen == 'M') legal[r][f] = 2; else // request promotion choice
            if(*fen == 'B') legal[r][f] = 4; else // request auto-promotion to victim
            if(*fen >= 'A' && *fen <= 'Z') legal[r][f] = 3; else