Fix hash key after setboard
authorH.G.Muller <hgm@hgm-xboard.(none)>
Mon, 28 Apr 2014 20:03:06 +0000 (22:03 +0200)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Mon, 28 Apr 2014 20:03:06 +0000 (22:03 +0200)
The initial hash key was the same in any start position. This resulted
in a has-hit on the opening position, which was searched to make a move list
after 'new', in the position after 'setboard', so the opening's hash move
could be played in any position, even where it was completely invalid.

hachu.c

diff --git a/hachu.c b/hachu.c
index 5893196..641de3b 100644 (file)
--- a/hachu.c
+++ b/hachu.c
@@ -12,7 +12,7 @@
 \r
 #define VERSION "0.19"\r
 \r
-//define PATH level==0 || path[0] == 0x1103a &&  (level==1 || path[1] == 0x6f0f6 && (level == 2 /*|| path[2] == 0x8710f && (level == 3 /*|| path[3] == 0x3e865 && (level == 4 || path[4] == 0x4b865 && (level == 5)))*/))\r
+//define PATH level==0/* || path[0] == 0x1103a &&  (level==1 || path[1] == 0x6f0f6 && (level == 2 /*|| path[2] == 0x8710f && (level == 3 /*|| path[3] == 0x3e865 && (level == 4 || path[4] == 0x4b865 && (level == 5)))))*/\r
 #define PATH 0\r
 \r
 #define HASH\r
@@ -2334,7 +2334,7 @@ Setup2 (char *fen)
   SetUp(array, currentVariant);\r
   strcpy(startPos, array);\r
   sup0 = sup1 = sup2 = ABSENT;\r
-  hashKeyH = hashKeyL = 87620895*currentVariant;\r
+  hashKeyH = hashKeyL = 87620895*currentVariant + !!fen;\r
   return stm;\r
 }\r
 \r