Print this page
11506 smatch resync
*** 279,296 ****
}
static void match_assign_has_buf_comparison(struct expression *expr)
{
struct expression *size;
if (expr->op != '=')
return;
if (expr->right->type == EXPR_CALL)
return;
! size = get_size_variable(expr->right);
if (!size)
return;
match_alloc_helper(expr->left, size, 1);
}
static void match_assign_data(struct expression *expr)
{
--- 279,299 ----
}
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, &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,462 ****
--- 456,466 ----
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);