diff --git a/lib/checkuninitvar.cpp b/lib/checkuninitvar.cpp index 078f44afc..163580505 100644 --- a/lib/checkuninitvar.cpp +++ b/lib/checkuninitvar.cpp @@ -360,6 +360,14 @@ bool CheckUninitVar::checkScopeForVariable(const Token *tok, const Variable& var bool alwaysTrue = false; bool alwaysFalse = false; + // Is variable assigned in condition? + if (!membervar.empty()) { + for (const Token *cond = tok->linkAt(1); cond != tok; cond = cond->previous()) { + if (cond->varId() == var.declarationId() && isMemberVariableAssignment(cond, membervar)) + return true; + } + } + conditionAlwaysTrueOrFalse(tok->next()->astOperand2(), variableValue, &alwaysTrue, &alwaysFalse); // initialization / usage in condition.. diff --git a/lib/ctu.cpp b/lib/ctu.cpp index ae90b0b90..75d897073 100644 --- a/lib/ctu.cpp +++ b/lib/ctu.cpp @@ -213,7 +213,6 @@ void CTU::FileInfo::loadFromXml(const tinyxml2::XMLElement *xmlElement) if (std::strcmp(e->Name(), "function-call") == 0) { FunctionCall functionCall; if (functionCall.loadFromXml(e)) - // cppcheck-suppress uninitStructMember // FP functionCalls.push_back(functionCall); } else if (std::strcmp(e->Name(), "nested-call") == 0) { NestedCall nestedCall;