Print this page
11506 smatch resync
@@ -279,18 +279,21 @@
}
static void match_assign_has_buf_comparison(struct expression *expr)
{
struct expression *size;
+ int limit_type;
if (expr->op != '=')
return;
if (expr->right->type == EXPR_CALL)
return;
- size = get_size_variable(expr->right);
+ size = get_size_variable(expr->right, &limit_type);
if (!size)
return;
+ if (limit_type != ELEM_COUNT)
+ return;
match_alloc_helper(expr->left, size, 1);
}
static void match_assign_data(struct expression *expr)
{
@@ -453,10 +456,11 @@
void register_constraints_required(int id)
{
my_id = id;
+ set_dynamic_states(my_id);
add_hook(&match_assign_size, ASSIGNMENT_HOOK);
add_hook(&match_assign_data, ASSIGNMENT_HOOK);
add_hook(&match_assign_has_buf_comparison, ASSIGNMENT_HOOK);
add_hook(&match_assign_ARRAY_SIZE, ASSIGNMENT_HOOK);