Fix sorting of Engine Output
[xboard.git] / engineoutput.c
index 438564d..47d3fc1 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Copyright 2005 Alessandro Scotti
  *
- * Enhancements Copyright 1995, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+ * Enhancements Copyright 1995, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
  *
  * ------------------------------------------------------------------------
  *
@@ -113,7 +113,7 @@ MakeEngineOutputTitle ()
        if( count == backwardMostMove ) count -= initialRulePlies;
        count = currentMove - count;
        if(!rule) rule = 100;
-       if(count >= rule - 40 && (!appData.icsActive || gameMode == IcsObserving)) {
+       if(count >= rule - 40 && (!appData.icsActive || gameMode == IcsObserving || appData.zippyPlay)) {
                snprintf(buf, MSG_SIZ, ngettext("%s (%d reversible ply)", "%s (%d reversible plies)", count), title, count);
                safeStrCpy(title, buf, MSG_SIZ);
        }
@@ -413,7 +413,7 @@ InsertionPoint (int len, EngineOutputData *ed)
                if(ed->moveKey != keys[i+n] && // same move always tops previous one (as a higher score must be a fail low)
                   newScore < scores[i+n]) break;
                // if it had higher score as previous, move previous in stead
-               scores[i+n+2] = scores[i+n];
+               scores[i+n+2] = ed->moveKey == keys[i+n] ? newScore : scores[i+n]; // correct scores of fail-low/high searches
                textEnd[i+n+2] = textEnd[i+n] + len;
                keys[i+n+2] = keys[i+n];
        }
@@ -421,6 +421,7 @@ InsertionPoint (int len, EngineOutputData *ed)
                offs = 0;
                textEnd[n] = offs + len;
                scores[n] = newScore;
+               keys[n] = ed->moveKey;
        }
        nrVariations[n] += 2;
       return offs + (gameMode == AnalyzeMode)*strlen(header[ed->which]);