Skip to content

Commit 80e46cf

Browse files
committed
assert flawed known value usage [skip ci]
1 parent 37f4de2 commit 80e46cf

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
@@ -6779,6 +6779,7 @@ static void valueFlowDynamicBufferSize(const TokenList& tokenlist, const SymbolD
67796779
case Library::AllocFunc::BufferSize::strdup:
67806780
if (arg1 && arg1->hasKnownValue()) {
67816781
const ValueFlow::Value& value = arg1->values().back();
6782+
assert(value.isKnown());
67826783
if (value.isTokValue() && value.tokvalue->tokType() == Token::eString)
67836784
sizeValue = Token::getStrLength(value.tokvalue) + 1; // Add one for the null terminator
67846785
}
@@ -7037,7 +7038,10 @@ const ValueFlow::Value *ValueFlow::valueFlowConstantFoldAST(Token *expr, const S
70377038
valueFlowConstantFoldAST(expr->astOperand2(), settings);
70387039
valueFlowSetConstantValue(expr, settings);
70397040
}
7040-
return expr && expr->hasKnownValue() ? &expr->values().front() : nullptr;
7041+
const auto* v = expr && expr->hasKnownValue() ? &expr->values().front() : nullptr;
7042+
if (v)
7043+
assert(v->isKnown());
7044+
return v;
70417045
}
70427046

70437047
struct ValueFlowState {

lib/vf_settokenvalue.cpp

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

0 commit comments

Comments
 (0)