fixed forteitary wins for special game variations
[xboard.git] / backend.c
index 0e36ec2..e3f1cee 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -7832,7 +7832,9 @@ GameEnds(result, resultDetails, whosays)
            }\r
            /* [HGM] bare: don't allow bare King to win */\r
            if((gameInfo.holdingsWidth == 0 || gameInfo.variant == VariantSuper || gameInfo.variant == VariantGreat)\r
-                        && result != GameIsDrawn)\r
+              && gameInfo.variant != VariantLosers && gameInfo.variant != VariantGiveaway \r
+              && gameInfo.variant != VariantSuicide // [HGM] losers: except in losers, of course...\r
+              && result != GameIsDrawn)\r
            {   int i, j, k=0, color = (result==WhiteWins ? (int)WhitePawn : (int)BlackPawn);\r
                for(j=BOARD_LEFT; j<BOARD_RGHT; j++) for(i=0; i<BOARD_HEIGHT; i++) {\r
                        int p = (int)boards[forwardMostMove][i][j] - color;\r
@@ -12401,8 +12403,9 @@ ParseOption(Option *opt, ChessProgramState *cps)
        } else return FALSE;\r
        *p = 0; // terminate option name\r
        // now look if the command-line options define a setting for this engine option.\r
-       p = strstr(cps->optionSettings, opt->name);\r
-       if(p == cps->optionSettings || p[-1] == ',') {\r
+       if(cps->optionSettings && cps->optionSettings[0])\r
+           p = strstr(cps->optionSettings, opt->name); else p = NULL;\r
+       if(p && (p == cps->optionSettings || p[-1] == ',')) {\r
                sprintf(buf, "option %s", p);\r
                if(p = strstr(buf, ",")) *p = 0;\r
                strcat(buf, "\n");\r