Skip to content

Commit ce909ba

Browse files
committed
assert flawed known value usage
1 parent fd7558d commit ce909ba

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
@@ -7008,6 +7008,7 @@ static void valueFlowDynamicBufferSize(const TokenList& tokenlist, const SymbolD
70087008
case Library::AllocFunc::BufferSize::strdup:
70097009
if (arg1 && arg1->hasKnownValue()) {
70107010
const ValueFlow::Value& value = arg1->values().back();
7011+
assert(value.isKnown());
70117012
if (value.isTokValue() && value.tokvalue->tokType() == Token::eString)
70127013
sizeValue = Token::getStrLength(value.tokvalue) + 1; // Add one for the null terminator
70137014
}
@@ -7268,7 +7269,10 @@ const ValueFlow::Value *ValueFlow::valueFlowConstantFoldAST(Token *expr, const S
72687269
valueFlowConstantFoldAST(expr->astOperand2(), settings);
72697270
valueFlowSetConstantValue(expr, settings);
72707271
}
7271-
return expr && expr->hasKnownValue() ? &expr->values().front() : nullptr;
7272+
const auto* v = expr && expr->hasKnownValue() ? &expr->values().front() : nullptr;
7273+
if (v)
7274+
assert(v->isKnown());
7275+
return v;
72727276
}
72737277

72747278
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)