mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-20 09:06:45 +08:00
Fix operator++ definition
ENABLE_OPERATORS_ON has incorrect definitions of post-increment and post-decrement operators. In particularly the returned value is the variable already incremented/decremented, while instead they should return the variable _before_ inc/dec. This has no real effect because are only used in loops and where the returned value is never used, neverthless it is wrong. The fix would be to copy the variable to a dummy, then inc/dec the variable, then return the dummy. So instead, rename to pre-increment that can be implemented without the dummy, actually the current implementation it is already the correct pre-increment, with the only change to return a reference (an l-value) and not a copy, so to properly mimic the pre-increment on native integers. Spotted by Kojirion. No functional change.
This commit is contained in:
@@ -622,11 +622,11 @@ Value do_evaluate(const Position& pos, Value& margin) {
|
||||
// type of attacking piece, from knights to queens. Kings are not
|
||||
// considered because are already handled in king evaluation.
|
||||
if (weakEnemies)
|
||||
for (PieceType pt1 = KNIGHT; pt1 < KING; pt1++)
|
||||
for (PieceType pt1 = KNIGHT; pt1 < KING; ++pt1)
|
||||
{
|
||||
b = ei.attackedBy[Us][pt1] & weakEnemies;
|
||||
if (b)
|
||||
for (PieceType pt2 = PAWN; pt2 < KING; pt2++)
|
||||
for (PieceType pt2 = PAWN; pt2 < KING; ++pt2)
|
||||
if (b & pos.pieces(pt2))
|
||||
score += Threat[pt1][pt2];
|
||||
}
|
||||
@@ -908,7 +908,7 @@ Value do_evaluate(const Position& pos, Value& margin) {
|
||||
|
||||
// Step 1. Hunt for unstoppable passed pawns. If we find at least one,
|
||||
// record how many plies are required for promotion.
|
||||
for (c = WHITE; c <= BLACK; c++)
|
||||
for (c = WHITE; c <= BLACK; ++c)
|
||||
{
|
||||
// Skip if other side has non-pawn pieces
|
||||
if (pos.non_pawn_material(~c))
|
||||
|
||||
Reference in New Issue
Block a user