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