Make sure node count is positive
authorH.G.Muller <hgm@hgm-xboard.(none)>
Sat, 6 Sep 2014 11:15:55 +0000 (13:15 +0200)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Sat, 6 Sep 2014 11:15:55 +0000 (13:15 +0200)
Engines that print the node count as an int overflow into negative values
when the count exceeds 2G. This is really an engine bug, but as it
interferes extremely annoyingly with the alignment of the Thinking Output
XBoard now repairs it by adding 4G to undo the overflow.

backend.c

index f5b4e59..f3f86c6 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -9421,6 +9421,9 @@ printf("score=%d count=%d\n",score,count);
            if (sscanf(message, "%d%c %d %d " u64Display " %[^\n]\n",
                       &plylev, &plyext, &curscore, &time, &nodes, buf1) >= 5) {
 
+               if(nodes>>32 == u64Const(0xFFFFFFFF))   // [HGM] negative node count read
+                   nodes += u64Const(0x100000000);
+
                if (plyext != ' ' && plyext != '\t') {
                    time *= 100;
                }