From 1a08cdf01af556378afeaafeaff16f7ece81bb67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= Date: Wed, 18 Dec 2019 12:46:24 +0100 Subject: [PATCH] BinaryOpNode::findConstantEquations(): fix bug related to nested if/else MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- src/ExprNode.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/ExprNode.cc b/src/ExprNode.cc index 427d0a9e..e2288518 100644 --- a/src/ExprNode.cc +++ b/src/ExprNode.cc @@ -5949,10 +5949,12 @@ void BinaryOpNode::findConstantEquations(map &table) const { if (op_code == BinaryOpcode::equal) - if (dynamic_cast(arg1) && dynamic_cast(arg2)) - table[dynamic_cast(arg1)] = dynamic_cast(arg2); - else if (dynamic_cast(arg2) && dynamic_cast(arg1)) - table[dynamic_cast(arg2)] = dynamic_cast(arg1); + { + if (dynamic_cast(arg1) && dynamic_cast(arg2)) + table[dynamic_cast(arg1)] = dynamic_cast(arg2); + else if (dynamic_cast(arg2) && dynamic_cast(arg1)) + table[dynamic_cast(arg2)] = dynamic_cast(arg1); + } else { arg1->findConstantEquations(table);