X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fdata-io%2Ftrim.c;h=4616b431d22cb1303810e8679899514d0589f5bb;hb=af8622f11c920a03269ad489617d86bfd568b287;hp=2ef085e796c08d2e94ca905f94d0ec2b75fd73b5;hpb=3ce390ce7cbbcf38b7e6d5ddd6426deaf73135ba;p=pspp diff --git a/src/language/data-io/trim.c b/src/language/data-io/trim.c index 2ef085e796..4616b431d2 100644 --- a/src/language/data-io/trim.c +++ b/src/language/data-io/trim.c @@ -276,7 +276,7 @@ parse_dict_drop (struct lexer *lexer, struct dictionary *dict) dict_delete_vars (dict, v, nv); free (v); - if (dict_get_var_cnt (dict) == 0) + if (dict_get_n_vars (dict) == 0) { msg (SE, _("Cannot DROP all variables from dictionary.")); return false; @@ -302,10 +302,16 @@ parse_dict_keep (struct lexer *lexer, struct dictionary *dict) dict_reorder_vars (dict, v, nv); /* Delete the remaining variables. */ - v = xnrealloc (v, dict_get_var_cnt (dict) - nv, sizeof *v); - for (i = nv; i < dict_get_var_cnt (dict); i++) + if (dict_get_n_vars (dict) == nv) + { + free (v); + return true; + } + + v = xnrealloc (v, dict_get_n_vars (dict) - nv, sizeof *v); + for (i = nv; i < dict_get_n_vars (dict); i++) v[i - nv] = dict_get_var (dict, i); - dict_delete_vars (dict, v, dict_get_var_cnt (dict) - nv); + dict_delete_vars (dict, v, dict_get_n_vars (dict) - nv); free (v); return true;