diff --git a/src/backend/metadata/conditional_metadata.cpp b/src/backend/metadata/conditional_metadata.cpp index 2d393916..1ffc3fb2 100644 --- a/src/backend/metadata/conditional_metadata.cpp +++ b/src/backend/metadata/conditional_metadata.cpp @@ -77,26 +77,23 @@ bool ConditionalMetadata::ParseCondition(Game * game) const { ConditionGrammar grammar(game); boost::spirit::qi::space_type skipper; - string::const_iterator begin, end; - - begin = condition_.begin(); - end = condition_.end(); + string::const_iterator begin = condition_.begin(); + string::const_iterator end = condition_.end(); + bool parseResult; + bool evaluation; try { - bool evaluation; bool parseResult = boost::spirit::qi::phrase_parse(begin, end, grammar, skipper, evaluation); - - if (!parseResult || begin != end) { - BOOST_LOG_TRIVIAL(error) << "Failed to parse condition \"" << condition_ << "\": only partially matched expected syntax."; - throw ConditionSyntaxError((boost::format(translate("Failed to parse condition \"%1%\": only partially matched expected syntax.")) % condition_).str()); - } - - return evaluation; - } catch (ConditionSyntaxError& e) { - throw; } catch (exception& e) { BOOST_LOG_TRIVIAL(error) << "Failed to evaluate condition \"" << condition_ << "\": " << e.what(); throw; } + + if (!parseResult || begin != end) { + BOOST_LOG_TRIVIAL(error) << "Failed to parse condition \"" << condition_ << "\": only partially matched expected syntax."; + throw ConditionSyntaxError((boost::format(translate("Failed to parse condition \"%1%\": only partially matched expected syntax.")) % condition_).str()); + } + + return evaluation; } }