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