Fix phantom move when no non-captures
authorH.G.Muller <hgm@hgm-xboard.(none)>
Mon, 2 Jun 2014 17:37:28 +0000 (19:37 +0200)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Mon, 2 Jun 2014 17:37:28 +0000 (19:37 +0200)
When there were no non-captures generated at all, a random one would be
tried that happened to be left on the move stack from another node, which
needed not even be a faulty move. In some tsume problems where this move
happened to be the capture of the King with an empty square, this lead to
reporting false mates. (Usually you only have no non-captures if you have
no pieces, and in tsume you might not even have a King.)

hachu.c

diff --git a/hachu.c b/hachu.c
index 0eea758..0c8a239 100644 (file)
--- a/hachu.c
+++ b/hachu.c
@@ -1950,6 +1950,7 @@ if(PATH) printf("# autofail end (%d-%d)\n", firstMove, msp);
          case 6: // non-captures\r
            nonCapts = msp;\r
            nullMove = GenNonCapts(oldPromo);\r
+           if(msp == nonCapts) goto cutoff;\r
 #ifdef KILLERS\r
            { // swap killers to front\r
              Move h = killer[level][0]; int j = curMove;\r