diff --git a/lib/reverseanalyzer.cpp b/lib/reverseanalyzer.cpp index d85366a71..a243cc7ea 100644 --- a/lib/reverseanalyzer.cpp +++ b/lib/reverseanalyzer.cpp @@ -225,7 +225,7 @@ struct ReverseTraversal { continue; } // Simple assign - if (assignTok->astParent() == assignTop || assignTok == assignTop) { + if (assignTok->str() == "=" && (assignTok->astParent() == assignTop || assignTok == assignTop)) { Analyzer::Action rhsAction = analyzer->analyze(assignTok->astOperand2(), Analyzer::Direction::Reverse); Analyzer::Action lhsAction = diff --git a/test/testother.cpp b/test/testother.cpp index 0fa1c8c26..33fe01276 100644 --- a/test/testother.cpp +++ b/test/testother.cpp @@ -820,6 +820,14 @@ private: " STATIC_ASSERT(sizeof(int) == sizeof(FOO));\n" "}\n"); ASSERT_EQUALS("", errout.str()); + + // #11505 + check("void f(uint16_t num, uint8_t radix) {\n" + " int c = num % radix;\n" + " num /= radix;\n" + " if (!num) {}\n" + "}\n"); + ASSERT_EQUALS("", errout.str()); } void nanInArithmeticExpression() {