diff --git a/lib/valueflow.cpp b/lib/valueflow.cpp index 89baf503cac..ecba13d38bc 100644 --- a/lib/valueflow.cpp +++ b/lib/valueflow.cpp @@ -6779,6 +6779,7 @@ static void valueFlowDynamicBufferSize(const TokenList& tokenlist, const SymbolD case Library::AllocFunc::BufferSize::strdup: if (arg1 && arg1->hasKnownValue()) { const ValueFlow::Value& value = arg1->values().back(); + assert(value.isKnown()); if (value.isTokValue() && value.tokvalue->tokType() == Token::eString) sizeValue = Token::getStrLength(value.tokvalue) + 1; // Add one for the null terminator } @@ -7037,7 +7038,10 @@ const ValueFlow::Value *ValueFlow::valueFlowConstantFoldAST(Token *expr, const S valueFlowConstantFoldAST(expr->astOperand2(), settings); valueFlowSetConstantValue(expr, settings); } - return expr && expr->hasKnownValue() ? &expr->values().front() : nullptr; + const auto* v = expr && expr->hasKnownValue() ? &expr->values().front() : nullptr; + if (v) + assert(v->isKnown()); + return v; } struct ValueFlowState { diff --git a/lib/vf_settokenvalue.cpp b/lib/vf_settokenvalue.cpp index a04a9750c6b..3b4001c78b8 100644 --- a/lib/vf_settokenvalue.cpp +++ b/lib/vf_settokenvalue.cpp @@ -392,6 +392,7 @@ namespace ValueFlow // is condition always true/false? if (parent->astOperand1()->hasKnownValue()) { const Value &condvalue = parent->astOperand1()->values().front(); + assert(condvalue.isKnown()); const bool cond(condvalue.isTokValue() || (condvalue.isIntValue() && condvalue.intvalue != 0)); if (cond && !tok->astOperand1()) { // true condition, no second operator setTokenValue(parent, condvalue, settings);