From 213373f5f9c582dfcce07f4cde3eaa41e96f034a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Tue, 12 Jul 2016 11:42:41 +0200 Subject: [PATCH] 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. --- Source/Core/Common/StringUtil.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Source/Core/Common/StringUtil.cpp b/Source/Core/Common/StringUtil.cpp index 6f50afce3e..ff6c6074cf 100644 --- a/Source/Core/Common/StringUtil.cpp +++ b/Source/Core/Common/StringUtil.cpp @@ -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;