cppparser: prevent enum values having long chain of additions

See #1638

[skip ci]
This commit is contained in:
rdb 2024-03-28 22:49:15 +01:00
parent bddb7cb262
commit d1c277ef6a

View File

@ -117,6 +117,14 @@ add_element(const std::string &name, CPPExpression *value,
} else if (_last_value->_type == CPPExpression::T_integer) { } else if (_last_value->_type == CPPExpression::T_integer) {
value = new CPPExpression(_last_value->_u._integer + 1); value = new CPPExpression(_last_value->_u._integer + 1);
} else if (_last_value->_type == CPPExpression::T_binary_operation &&
_last_value->_u._op._operator == '+' &&
_last_value->_u._op._op2->_type == CPPExpression::T_integer) {
// Prevent an endless expansion of + expressions.
value = new CPPExpression('+',
_last_value->_u._op._op1,
new CPPExpression(_last_value->_u._op._op2->_u._integer + 1));
} else { } else {
// We may not be able to determine the value just yet. No problem; // We may not be able to determine the value just yet. No problem;
// we'll just define it as another expression. // we'll just define it as another expression.