Fix bug in parsing variations
authorH.G. Muller <h.g.muller@hccnet.nl>
Sun, 2 Jan 2011 13:17:32 +0000 (14:17 +0100)
committerArun Persaud <arun@nubati.net>
Tue, 11 Jan 2011 05:22:03 +0000 (21:22 -0800)
The moves parsed from a variation were stored in the moveList without
appended linefeed. This caused errors if the variation extended to
beyond the end of the main line,into a hitherto unused part of the move
list, as the linefeed was then not there from the overwritten move. As a
result moves sent to the engine were concatenated, triggering
illegal-move messages and bringing the engine out of phase.

backend.c

index 410488b..e686722 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -4991,6 +4991,9 @@ fprintf(debugFP,"parsePV: %d %c%c%c%c yy='%s'\nPV = '%s'\n", valid, fromX+AAA, f
     moveList[endPV-1][1] = fromY + ONE;
     moveList[endPV-1][2] = toX + AAA;
     moveList[endPV-1][3] = toY + ONE;
+    moveList[endPV-1][4] = promoChar;
+    moveList[endPV-1][5] = NULLCHAR;
+    strncat(moveList[endPV-1], "\n", MOVE_LEN);
     if(storeComments)
        CoordsToAlgebraic(boards[endPV - 1],
                             PosFlags(endPV - 1),