Fix parsing bug of FRC castling
authorH.G. Muller <h.g.muller@hccnet.nl>
Tue, 1 Mar 2011 22:42:34 +0000 (23:42 +0100)
committerArun Persaud <apersaud@lbl.gov>
Fri, 4 Mar 2011 05:11:48 +0000 (21:11 -0800)
The code that was supposed to intercept castling when no rights existed
in FRC was not adapted to the new encoding for this by NoRights, rather
than -1, and furthermore returned 0 (= EndOfFile) rather than
ImpossibleMove. Not sure if the former would manifest itself in any
way, but the latter seems bad.

parser.l

index 392b5b2..9515fea 100644 (file)
--- a/parser.l
+++ b/parser.l
@@ -756,7 +756,7 @@ extern void CopyBoard P((Board to, Board from));
         {
           fprintf(debugFP, "Parser FRC long %d %d\n", ff, ft);
         };
-        if(ff < 0 || ft < 0) return 0;
+        if(ff == NoRights || ft == NoRights) return 0;
     }
     sprintf(currentMoveString, "%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE);
     if (appData.debugMode) {
@@ -810,7 +810,7 @@ extern void CopyBoard P((Board to, Board from));
     if (appData.debugMode) {
         fprintf(debugFP, "Parser FRC short %d %d\n", ff, ft);
     }
-        if(ff < 0 || ft < 0) return 0;
+        if(ff == NoRights || ft == NoRights) return 0;
     }
     sprintf(currentMoveString, "%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE);
     if (appData.debugMode) {