From d301cf28ecdd5716e6bd8aa50ddc471ebfc785c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Sat, 21 Nov 2015 08:32:25 +0100 Subject: [PATCH] CheckUninitVar: Small logical fixes in conditions handling. --- lib/checkuninitvar.cpp | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/lib/checkuninitvar.cpp b/lib/checkuninitvar.cpp index fc49d6b6b..8d478548c 100644 --- a/lib/checkuninitvar.cpp +++ b/lib/checkuninitvar.cpp @@ -248,14 +248,9 @@ static void conditionAlwaysTrueOrFalse(const Token *tok, const std::mapastOperand1(), variableValue, &t1, &f1); bool t2=false, f2=false; if (!t1) - conditionAlwaysTrueOrFalse(tok->astOperand1(), variableValue, &t2, &f2); - if (t1 || t2) { - *alwaysTrue = true; - *alwaysFalse = false; - } else if (f1 && f2) { - *alwaysTrue = false; - *alwaysFalse = true; - } + conditionAlwaysTrueOrFalse(tok->astOperand2(), variableValue, &t2, &f2); + *alwaysTrue = (t1 || t2); + *alwaysFalse = (f1 && f2); } else if (tok->str() == "&&") { @@ -263,14 +258,9 @@ static void conditionAlwaysTrueOrFalse(const Token *tok, const std::mapastOperand1(), variableValue, &t1, &f1); bool t2=false, f2=false; if (!f1) - conditionAlwaysTrueOrFalse(tok->astOperand1(), variableValue, &t2, &f2); - if (t1 && t2) { - *alwaysTrue = true; - *alwaysFalse = false; - } else if (f1 && f2) { - *alwaysTrue = false; - *alwaysFalse = true; - } + conditionAlwaysTrueOrFalse(tok->astOperand2(), variableValue, &t2, &f2); + *alwaysTrue = (t1 && t2); + *alwaysFalse = (f1 || f2); } }