- // Save gain for the parent non-capture move
- update_gains(pos, (ss-1)->currentMove, (ss-1)->eval, ss->eval);
+ // Update gain for the parent non-capture move given the static position
+ // evaluation before and after the move.
+ if ( (move = (ss-1)->currentMove) != MOVE_NULL
+ && (ss-1)->eval != VALUE_NONE
+ && ss->eval != VALUE_NONE
+ && pos.captured_piece_type() == PIECE_TYPE_NONE
+ && !is_special(move))
+ {
+ Square to = move_to(move);
+ H.update_gain(pos.piece_on(to), to, -(ss-1)->eval - ss->eval);
+ }