Suppress playing of book moves with weight 0
authorH.G. Muller <h.g.muller@hccnet.nl>
Mon, 26 Sep 2011 13:44:23 +0000 (15:44 +0200)
committerH.G. Muller <h.g.muller@hccnet.nl>
Mon, 3 Oct 2011 07:19:19 +0000 (09:19 +0200)
Bookmoves with weight 0 could be played when the sum of the weights
of all moves from the position was 0. So it was not possible to suppress
the only move by giving it weight 0. This is now corrected.

book.c

diff --git a/book.c b/book.c
index 3650b01..4f389ac 100644 (file)
--- a/book.c
+++ b/book.c
@@ -534,6 +534,7 @@ char *ProbeBook(int moveNr, char *book)
     for(i=0; i<count; i++){
         total_weight += entries[i].weight;
     }
     for(i=0; i<count; i++){
         total_weight += entries[i].weight;
     }
+    if(total_weight == 0) return NULL; // force book miss rather than playing moves with weight 0.
     j = (random() & 0xFFF) * total_weight >> 12; // create random < total_weight
     total_weight = 0;
     for(i=0; i<count; i++){
     j = (random() & 0xFFF) * total_weight >> 12; // create random < total_weight
     total_weight = 0;
     for(i=0; i<count; i++){