Skip to content

Commit 6fce913

Browse files
committed
assert flawed known value usage
1 parent 326a930 commit 6fce913

2 files changed

Lines changed: 6 additions & 1 deletion

File tree

lib/valueflow.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7019,6 +7019,7 @@ static void valueFlowDynamicBufferSize(const TokenList& tokenlist, const SymbolD
70197019
case Library::AllocFunc::BufferSize::strdup:
70207020
if (arg1 && arg1->hasKnownValue()) {
70217021
const ValueFlow::Value& value = arg1->values().back();
7022+
assert(value.isKnown());
70227023
if (value.isTokValue() && value.tokvalue->tokType() == Token::eString)
70237024
sizeValue = Token::getStrLength(value.tokvalue) + 1; // Add one for the null terminator
70247025
}
@@ -7279,7 +7280,10 @@ const ValueFlow::Value *ValueFlow::valueFlowConstantFoldAST(Token *expr, const S
72797280
valueFlowConstantFoldAST(expr->astOperand2(), settings);
72807281
valueFlowSetConstantValue(expr, settings);
72817282
}
7282-
return expr && expr->hasKnownValue() ? &expr->values().front() : nullptr;
7283+
const auto* v = expr && expr->hasKnownValue() ? &expr->values().front() : nullptr;
7284+
if (v)
7285+
assert(v->isKnown());
7286+
return v;
72837287
}
72847288

72857289
struct ValueFlowState {

lib/vf_settokenvalue.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,7 @@ namespace ValueFlow
393393
// is condition always true/false?
394394
if (parent->astOperand1()->hasKnownValue()) {
395395
const Value &condvalue = parent->astOperand1()->values().front();
396+
assert(condvalue.isKnown());
396397
const bool cond(condvalue.isTokValue() || (condvalue.isIntValue() && condvalue.intvalue != 0));
397398
if (cond && !tok->astOperand1()) { // true condition, no second operator
398399
setTokenValue(parent, condvalue, settings);

0 commit comments

Comments
 (0)