Fix variant choice
authorH.G. Muller <h.g.muller@hccnet.nl>
Fri, 28 Feb 2014 08:40:51 +0000 (09:40 +0100)
committerH.G. Muller <h.g.muller@hccnet.nl>
Fri, 28 Feb 2014 08:40:51 +0000 (09:40 +0100)
Init() must be passed the variant number, not a variant ID, so setting the
variant to Chess (which has number 0 in the variants table) got confused
with V_SAME for staying in the same variant, and thus did not work.
The invalid variant number -1 is now used to stay in the current variant.

hachu.c

diff --git a/hachu.c b/hachu.c
index 1bfa35a..84f7249 100644 (file)
--- a/hachu.c
+++ b/hachu.c
@@ -432,7 +432,9 @@ typedef struct {
   char *array; // initial position\r
 } VariantDesc;\r
 \r
-typedef enum { V_SAME, V_CHESS, V_SHO, V_CHU, V_DAI, V_DADA, V_MAKA, V_TAI, V_KYOKU, V_TENJIKU, V_SHATRANJ, V_MAKRUK, V_LION } Variant;\r
+typedef enum { V_CHESS, V_SHO, V_CHU, V_DAI, V_DADA, V_MAKA, V_TAI, V_KYOKU, V_TENJIKU, V_SHATRANJ, V_MAKRUK, V_LION } Variant;\r
+\r
+#define SAME (-1)\r
 \r
 VariantDesc variants[] = {\r
   { 16,  8,  8, 1, V_CHESS,  "normal", chessArray }, // FIDE\r
@@ -890,7 +892,7 @@ Init (int var)
   int i, j, k;\r
   PieceDesc *pawn;\r
 \r
-  if(var != V_SAME) { // the following should be already set if we stay in same variant (for TakeBack)\r
+  if(var != SAME) { // the following should be already set if we stay in same variant (for TakeBack)\r
   currentVariant = variants[var].varNr;\r
   bWidth  = variants[var].boardWidth;\r
   bHeight = variants[var].boardRanks;\r
@@ -2487,7 +2489,7 @@ printf("# ponder=%s\n", MoveToText(pv[1],0));
     { // reset the game and then replay it to the desired point\r
       int last, stm;\r
       last = moveNr - n; if(last < 0) last = 0;\r
-      Init(V_SAME); stm = Setup2(startPos);\r
+      Init(SAME); stm = Setup2(startPos);\r
 printf("# setup done");fflush(stdout);\r
       for(moveNr=0; moveNr<last; moveNr++) stm = MakeMove2(stm, gameMove[moveNr]),printf("make %2d: %x\n", moveNr, gameMove[moveNr]);\r
       return stm;\r