Print this page
11972 resync smatch
*** 51,60 ****
--- 51,63 ----
estate_set_fuzzy_max(tmp, sval_max(estate_get_fuzzy_max(s1), estate_get_fuzzy_max(s2)));
if (estate_capped(s1) && estate_capped(s2))
estate_set_capped(tmp);
+ if (estate_treat_untagged(s1) && estate_treat_untagged(s2))
+ estate_set_treat_untagged(tmp);
+
return tmp;
}
struct data_info *get_dinfo(struct smatch_state *state)
{
*** 114,124 ****
get_dinfo(state)->fuzzy_max = empty;
}
int estate_has_hard_max(struct smatch_state *state)
{
! if (!state)
return 0;
return get_dinfo(state)->hard_max;
}
void estate_set_hard_max(struct smatch_state *state)
--- 117,127 ----
get_dinfo(state)->fuzzy_max = empty;
}
int estate_has_hard_max(struct smatch_state *state)
{
! if (!state || !estate_rl(state))
return 0;
return get_dinfo(state)->hard_max;
}
void estate_set_hard_max(struct smatch_state *state)
*** 152,161 ****
--- 155,181 ----
void estate_set_capped(struct smatch_state *state)
{
get_dinfo(state)->capped = true;
}
+ bool estate_treat_untagged(struct smatch_state *state)
+ {
+ if (!state)
+ return false;
+
+ /* impossible states are capped */
+ if (!estate_rl(state))
+ return true;
+
+ return get_dinfo(state)->treat_untagged;
+ }
+
+ void estate_set_treat_untagged(struct smatch_state *state)
+ {
+ get_dinfo(state)->treat_untagged = true;
+ }
+
sval_t estate_min(struct smatch_state *state)
{
return rl_min(estate_rl(state));
}
*** 202,211 ****
--- 222,233 ----
return 1;
if (!rlists_equiv(estate_related(one), estate_related(two)))
return 0;
if (estate_capped(one) != estate_capped(two))
return 0;
+ if (estate_treat_untagged(one) != estate_treat_untagged(two))
+ return 0;
if (strcmp(one->name, two->name) == 0)
return 1;
return 0;
}
*** 232,241 ****
--- 254,265 ----
int estate_get_single_value(struct smatch_state *state, sval_t *sval)
{
sval_t min, max;
+ if (!estate_rl(state))
+ return 0;
min = rl_min(estate_rl(state));
max = rl_max(estate_rl(state));
if (sval_cmp(min, max) != 0)
return 0;
*sval = min;