Calling dict_get_vars (default_dict, &v_variables, &n_variables, DC_SYSTEM)
doesn't do what I thought it would do. The comment above the definition
of dict_get_vars() says:

/* Sets *VARS to an array of pointers to variables in D and *CNT to
   the number of variables in *D.  By default all variables are
   returned, but bits may be set in EXCLUDE_CLASSES to exclude
   ordinary, system, and/or scratch variables. */

Then this loop should count the relevant variables:

      for (i = 0; i < d->var_cnt; i++)
         if (!(exclude_classes & (1u << dict_class_from_id (d->var[i]->name))))
           count++;

...but (DC_SYSTEM & (1u << DC_ORDINARY)) is 1, so count is never
incremented for an ordinary variable. Shouldn't that statement be

          if (exclude_classes & (1u << dict_class_from_id
                                          (d->var[i]->name)))

?

-Jason


_______________________________________________
pspp-dev mailing list
pspp-dev@gnu.org
http://lists.gnu.org/mailman/listinfo/pspp-dev

Reply via email to