Fix a condition in connected_moves()
authorMarco Costalba <mcostalba@gmail.com>
Fri, 2 Nov 2012 16:04:51 +0000 (17:04 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Fri, 2 Nov 2012 16:18:38 +0000 (17:18 +0100)
commitbbdf9e47376d5df2dd3e2a3498c04c9f27b88cec
tree5e396b0f5e061c264f11a1c933f7aef752d3e382
parent94ecdef8ac7855e7a44efd7890c7e8f8d5819397
Fix a condition in connected_moves()

When checking if the moving piece p1 in a previous
move m1 defends the destination square of a move m2
we have to use the occupancy with the from square of
m2 removed so to take in account the case in which
f2 will block an x-ray attack from p1.

For instance in this position:
r2k3r/p1pp1pb1/qn3np1/1N2P3/1p3P2/2B5/PPP3QP/R3K2R b KQ - 1 9

The move eXf6 is connected to the previous move Bc3 that
defends the destination square f6.

With this patch we have about 10% more moves detected as
'connected'. Anyhow the absolute number is very low, about
4000 more moves out of 6M nodes searched.

Another issue spotted by Hongzhi "Hawk Eye" Cheng ;-)

new bench: 5757373
src/search.cpp