From 6b02a2b9541703032eea12d268b66eb918c3e100 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 3 Aug 2015 18:18:50 +0300 Subject: Fix false positives in IF_STMT/WHILE_STMT condition if useless checks detected. --- src/analysis/expression.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src') diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp index 57263d3..b2c250a 100644 --- a/src/analysis/expression.cpp +++ b/src/analysis/expression.cpp @@ -510,8 +510,13 @@ void analyseNeExpr(NeExprNode *node, const WalkItem &wi, WalkItem &wo) } } + wo.checkedThenNonNullVars.insert(var); + wo.checkedElseNullVars.insert(var); + wo.cleanExpr = true; + wo.uselessExpr = false; if (doReport) reportUselessCheck(node, var); + return; } } wo.cleanExpr = false; @@ -557,7 +562,12 @@ void analyseEqExpr(EqExprNode *node, const WalkItem &wi, WalkItem &wo) else if (isIn(var, wi.knownNullVars) || isIn(var, wi.knownNonNullVars)) { + wo.checkedThenNullVars.insert(var); + wo.checkedElseNonNullVars.insert(var); reportUselessCheck(node, var); + wo.cleanExpr = true; + wo.uselessExpr = false; + return; } } wo.cleanExpr = false; -- cgit v1.2.3-70-g09d2