X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fxforms%2Fcount.c;h=39f04574975faa4732cc682878937f888d1b222d;hb=9105b67fe006fe41c044e3659325594a52d0c899;hp=09e2693f73ca60283f88bba15c1b79588f1dac90;hpb=480a0746507ce73d26f528b56dc3ed80195096e0;p=pspp diff --git a/src/language/xforms/count.c b/src/language/xforms/count.c index 09e2693f73..39f0457497 100644 --- a/src/language/xforms/count.c +++ b/src/language/xforms/count.c @@ -58,10 +58,10 @@ struct criteria struct criteria *next; /* Variables to count. */ - struct variable **vars; + const struct variable **vars; size_t var_cnt; - /* Count special values?. */ + /* Count special values? */ bool count_system_missing; /* Count system missing? */ bool count_user_missing; /* Count user missing? */ @@ -136,10 +136,11 @@ cmd_count (struct lexer *lexer, struct dataset *ds) for (;;) { bool ok; - + crit->next = NULL; crit->vars = NULL; - if (!parse_variables (lexer, dataset_dict (ds), &crit->vars, &crit->var_cnt, + if (!parse_variables_const (lexer, dataset_dict (ds), &crit->vars, + &crit->var_cnt, PV_DUPLICATE | PV_SAME_TYPE)) goto fail; pool_register (trns->pool, free, crit->vars); @@ -277,11 +278,13 @@ count_numeric (struct criteria *crit, struct ccase *c) for (i = 0; i < crit->var_cnt; i++) { double x = case_num (c, crit->vars[i]); - if (x == SYSMIS) - counter += crit->count_system_missing; - else if (crit->count_user_missing - && var_is_num_user_missing (crit->vars[i], x)) - counter++; + if (var_is_num_missing (crit->vars[i], x, MV_ANY)) + { + if (x == SYSMIS + ? crit->count_system_missing + : crit->count_user_missing) + counter++; + } else { struct num_value *v;