X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fdictionary.c;h=d38ed5fc1326d15f8d75e565c3bc77c9034f0fbe;hb=4517b68e7248f22e7b7ed81f0d73179351a53047;hp=24f518b2681e2014d74174cc8c2632d84176b6e7;hpb=c898fab12a050123972d9021b1ccb93cc2df0456;p=pspp-builds.git diff --git a/src/data/dictionary.c b/src/data/dictionary.c index 24f518b2..d38ed5fc 100644 --- a/src/data/dictionary.c +++ b/src/data/dictionary.c @@ -155,17 +155,17 @@ dict_clear (struct dictionary *d) { /* FIXME? Should we really clear case_limit, label, documents? Others are necessarily cleared by deleting all the variables.*/ - int i; - assert (d != NULL); - for (i = 0; i < d->var_cnt; i++) + while (d->var_cnt > 0 ) { - if (d->callbacks && d->callbacks->var_deleted ) - d->callbacks->var_deleted (d, i, d->cb_data); + var_clear_vardict (d->var[d->var_cnt - 1]); + var_destroy (d->var[d->var_cnt -1]); + + d->var_cnt--; - var_clear_vardict (d->var[i]); - var_destroy (d->var[i]); + if (d->callbacks && d->callbacks->var_deleted ) + d->callbacks->var_deleted (d, d->var_cnt, d->cb_data); } free (d->var); d->var = NULL; @@ -291,7 +291,7 @@ add_var (struct dictionary *d, struct variable *v) hsh_force_insert (d->name_tab, v); if ( d->callbacks && d->callbacks->var_added ) - d->callbacks->var_added (d, d->next_value_idx, d->cb_data); + d->callbacks->var_added (d, var_get_dict_index (v), d->cb_data); d->next_value_idx += var_get_value_cnt (v);