Fix legality testing of drop moves
authorH.G. Muller <h.g.muller@hccnet.nl>
Sun, 16 Jan 2011 22:15:17 +0000 (23:15 +0100)
committerArun Persaud <arun@nubati.net>
Sat, 29 Jan 2011 02:15:59 +0000 (18:15 -0800)
Drops of noexistent pieces (i.e. with a piece indicator letter that is
not corresponding to any defined piece) are now parsed as
ImpossibleMove, rather than IllegalMove, so they are also rejected with
legality testing off.

parser.l

index 061d6ca..7188823 100644 (file)
--- a/parser.l
+++ b/parser.l
@@ -845,6 +845,8 @@ extern void CopyBoard P((Board to, Board from));
     } else {
        currentMoveString[0] = ToLower(yytext[0]);
     }
+    if(CharToPiece(currentMoveString[0]) == EmptySquare) return ImpossibleMove; // Unknown piece;
+
     return LegalityTest(boards[yyboardindex], PosFlags(yyboardindex), DROP_RANK, // [HGM] does drops now too
                         CharToPiece(currentMoveString[0]), currentMoveString[3] - ONE, currentMoveString[2] - AAA, NULLCHAR);
 }