BinaryOpNode::findConstantEquations(): fix bug related to nested if/else

In the absence of braces, the last “else” clause is always associated with the
closest “if”, which is not what was intended here. The indentation was
misleading.
issue#70
Sébastien Villemot 2019-12-18 12:46:24 +01:00
parent a4ef5a01d3
commit 1a08cdf01a
No known key found for this signature in database
GPG Key ID: 2CECE9350ECEBE4A
1 changed files with 6 additions and 4 deletions

View File

@ -5949,10 +5949,12 @@ void
BinaryOpNode::findConstantEquations(map<VariableNode *, NumConstNode *> &table) const BinaryOpNode::findConstantEquations(map<VariableNode *, NumConstNode *> &table) const
{ {
if (op_code == BinaryOpcode::equal) if (op_code == BinaryOpcode::equal)
if (dynamic_cast<VariableNode *>(arg1) && dynamic_cast<NumConstNode *>(arg2)) {
table[dynamic_cast<VariableNode *>(arg1)] = dynamic_cast<NumConstNode *>(arg2); if (dynamic_cast<VariableNode *>(arg1) && dynamic_cast<NumConstNode *>(arg2))
else if (dynamic_cast<VariableNode *>(arg2) && dynamic_cast<NumConstNode *>(arg1)) table[dynamic_cast<VariableNode *>(arg1)] = dynamic_cast<NumConstNode *>(arg2);
table[dynamic_cast<VariableNode *>(arg2)] = dynamic_cast<NumConstNode *>(arg1); else if (dynamic_cast<VariableNode *>(arg2) && dynamic_cast<NumConstNode *>(arg1))
table[dynamic_cast<VariableNode *>(arg2)] = dynamic_cast<NumConstNode *>(arg1);
}
else else
{ {
arg1->findConstantEquations(table); arg1->findConstantEquations(table);