From: Marco Costalba Date: Mon, 1 Feb 2010 13:06:59 +0000 (+0100) Subject: Check bounds in set_option_value() X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=8008f784150d040497ac8bd5a5153d90ea0dbde6;hp=3941e4bdb3e4871a3081fbae0036e65704363409 Check bounds in set_option_value() Normally it's up to the GUI to check for option's limits, but we could receive the new value directly from the user by teminal window. So let's check the bounds anyway. No functional change. Signed-off-by: Marco Costalba --- diff --git a/src/ucioption.cpp b/src/ucioption.cpp index dc1effa8..fe984575 100644 --- a/src/ucioption.cpp +++ b/src/ucioption.cpp @@ -293,10 +293,28 @@ void set_option_value(const string& name, const string& value) { else if (v == "false") v = "0"; - if (options.find(name) != options.end()) - options[name].currentValue = v; - else + if (options.find(name) == options.end()) + { std::cout << "No such option: " << name << std::endl; + return; + } + + // Normally it's up to the GUI to check for option's limits, + // but we could receive the new value directly from the user + // by teminal window. So let's check the bounds anyway. + Option& opt = options[name]; + + if (opt.type == CHECK && v != "0" && v != "1") + return; + + else if (opt.type == SPIN) + { + int val = atoi(v.c_str()); + if (val < opt.minValue || val > opt.maxValue) + return; + } + + opt.currentValue = v; }