StringUtil: Make TryParse parse floats as booleans

This is needed to keep compatibility with old configuration files which
didn't store booleans as booleans, but as floats/doubles.
This commit is contained in:
Léo Lam 2016-07-12 11:42:41 +02:00
parent 5e829f4527
commit 213373f5f9
1 changed files with 4 additions and 2 deletions

View File

@ -247,9 +247,11 @@ bool TryParse(const std::string& str, u32* const output)
bool TryParse(const std::string& str, bool* const output)
{
if ("1" == str || !strcasecmp("true", str.c_str()))
float value;
const bool is_valid_float = TryParse(str, &value);
if ((is_valid_float && value == 1) || !strcasecmp("true", str.c_str()))
*output = true;
else if ("0" == str || !strcasecmp("false", str.c_str()))
else if ((is_valid_float && value == 0) || !strcasecmp("false", str.c_str()))
*output = false;
else
return false;