X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=moves.c;h=5af3c47312ea224b489cee79f750589b4402df40;hb=7a9e8a6260d9b6be62e80f2250d211f30a1e50fb;hp=bcaef30286cbd4fd2f47c43e6716c7d4a76840e2;hpb=5bee433e9f42c5194734b2671dbbcfcf9068eab8;p=xboard.git diff --git a/moves.c b/moves.c index bcaef30..5af3c47 100644 --- a/moves.c +++ b/moves.c @@ -135,7 +135,7 @@ PieceToNumber (ChessSquare p) /* [HGM] holdings: count piece type, ignoring non int i=0; ChessSquare start = (int)p >= (int)BlackPawn ? BlackPawn : WhitePawn; - while(start++ != p) if(pieceToChar[(int)start-1] != '.') i++; + while(start++ != p) if(pieceToChar[start-1] != '.' && pieceToChar[start-1] != '+') i++; return i; } @@ -276,8 +276,8 @@ MovesFromString (Board board, int flags, int f, int r, char *desc, MoveCallback while(islower(*desc) && (i = dirType[*desc-'a']) != '0') { int b = dirs2[*desc-'a']; // when alone, use narrow version if(desc[1] == 'h') b = dirs1[*desc-'a'], desc += 2; // dirs1 is wide version - else if(islower(desc[1]) && i < '4' - && ((i | dirType[desc[1]-'a']) & 3) == 3) { // combinable (perpendicular dim) + else if(*desc == desc[1] || islower(desc[1]) && i < '4' + && ((i | dirType[desc[1]-'a']) & 3) == 3) { // combinable (perpendicular dim or same) b = dirs1[*desc-'a'] & dirs2[desc[1]-'a']; // intersect wide & perp narrow desc += 2; } else desc++;