Remember values set by -firstOptions, -secondOptions
authorH.G. Muller <h.g.muller@hccnet.nl>
Tue, 2 Nov 2010 12:06:58 +0000 (13:06 +0100)
committerH.G. Muller <h.g.muller@hccnet.nl>
Tue, 9 Nov 2010 14:01:19 +0000 (15:01 +0100)
When an engine announces its option features, and the option name
matches that of a setting given in -first/secondOptions, the engine is
sent hte specified value, but this value was not remembered as current
value (but the latter  was left at the engine-announced default),
leading to inconsistent behavior in the Engine #N Settings dialog.

backend.c

index 07df9ce..de835ae 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -13803,6 +13803,20 @@ ParseOption(Option *opt, ChessProgramState *cps)
        if(p && (p == cps->optionSettings || p[-1] == ',')) {
          snprintf(buf, MSG_SIZ, "option %s", p);
                if(p = strstr(buf, ",")) *p = 0;
+               if(q = strchr(buf, '=')) switch(opt->type) {
+                   case ComboBox:
+                       for(n=0; n<opt->max; n++)
+                           if(!strcmp(((char**)opt->textValue)[n], q+1)) opt->value = n;
+                       break;
+                   case TextBox:
+                       safeStrCpy(opt->textValue, q+1, MSG_SIZ - (opt->textValue - opt->name));
+                       break;
+                   case Spin:
+                   case CheckBox:
+                       opt->value = atoi(q+1);
+                   default:
+                       break;
+               }
                strcat(buf, "\n");
                SendToProgram(buf, cps);
        }