X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=moves.c;h=58cbfc008c47f8f794aa83acc0ebb1fe348d2bbf;hb=74025874f2010f84fd4f7f2e120e84b56ee9781b;hp=0def0759bf6264a142a02b78818be10af80d4a40;hpb=762e18baef5f815cc46019ba3e082bd5ec1980f6;p=xboard.git diff --git a/moves.c b/moves.c index 0def075..58cbfc0 100644 --- a/moves.c +++ b/moves.c @@ -169,7 +169,8 @@ ChessMove PromoCharToMoveType(whiteOnMove, promoChar) int whiteOnMove; int promoChar; { /* [HGM] made dependent on CharToPiece to alow alternate piece letters */ - ChessSquare piece = CharToPiece(whiteOnMove ? ToUpper(promoChar) : ToLower(promoChar) ); + ChessSquare piece = CharToPiece(whiteOnMove ? ToUpper(promoChar) : ToLower(promoChar) ); + if(promoChar == NULLCHAR) return NormalMove; switch(piece) { case WhiteQueen: @@ -577,7 +578,7 @@ void GenPseudoLegal(board, flags, epfile, callback, closure) if (board[rt][ft] != EmptySquare) break; } if(m==1) goto mounted; - if(m==2) goto walking; + if(m==2) goto finishGold; break; case WhiteQueen: @@ -1265,7 +1266,7 @@ void Disambiguate(board, flags, epfile, closure) #endif /* [HGM] returns 'q' for optional promotion, 'n' for mandatory */ if(closure->promoCharIn != '=') - closure->promoChar = ToLower(PieceToChar(PromoPiece(closure->kind))); + closure->promoChar = ToLower(closure->promoCharIn); else closure->promoChar = '='; if (closure->promoChar == 'x') closure->promoChar = NULLCHAR; if (closure->count > 1) { @@ -1280,7 +1281,7 @@ void Disambiguate(board, flags, epfile, closure) } if(closure->kind == IllegalMove) /* [HGM] might be a variant we don't understand, pass on promotion info */ - closure->promoChar = closure->promoCharIn; + closure->promoChar = ToLower(closure->promoCharIn); if (appData.debugMode) { fprintf(debugFP, "Disambiguate out: %d(%d,%d)-(%d,%d) = %d (%c)\n", closure->piece,closure->ff,closure->rf,closure->ft,closure->rt,closure->promoChar,