If the width of a variable changes, then implicitly so does its
missing values --- even if the number of missing values is zero.
This is because the variable's width is cached in the missing_value
struct itself.
- if (var_has_missing_values (v))
+ if (mv_is_resizable (&v->miss, new_width))
+ mv_resize (&v->miss, new_width);
+ else
- if (mv_is_resizable (&v->miss, new_width))
- mv_resize (&v->miss, new_width);
- else
- {
- mv_destroy (&v->miss);
- mv_init (&v->miss, new_width);
- }
- traits |= VAR_TRAIT_MISSING_VALUES;
+ mv_destroy (&v->miss);
+ mv_init (&v->miss, new_width);
+ if (new_width != var_get_width (v))
+ traits |= VAR_TRAIT_MISSING_VALUES;
if (v->val_labs != NULL)
{
if (v->val_labs != NULL)
{