X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fdataset.c;h=afab39dc0c5e63a4bdfa2a6ba4d49b6b37c65137;hb=refs%2Fheads%2Fpxd;hp=5b3f0ba5fb3a1b65c241f8757af77d08bfca2de9;hpb=765362af497f7b1f9c9a5ef387d40eac474fbbe3;p=pspp diff --git a/src/data/dataset.c b/src/data/dataset.c index 5b3f0ba5fb..afab39dc0c 100644 --- a/src/data/dataset.c +++ b/src/data/dataset.c @@ -30,6 +30,7 @@ #include "data/casereader-provider.h" #include "data/casereader-shim.h" #include "data/casewriter.h" +#include "data/control-stack.h" #include "data/dictionary.h" #include "data/file-handle-def.h" #include "data/session.h" @@ -201,6 +202,7 @@ dataset_destroy (struct dataset *ds) dataset_clear (ds); dict_destroy (ds->dict); caseinit_destroy (ds->caseinit); + ctl_stack_clear (); trns_chain_destroy (ds->permanent_trns_chain); dataset_transformations_changed__ (ds, false); free (ds->name); @@ -426,7 +428,7 @@ proc_open_filtering (struct dataset *ds, bool filter) add_case_limit_trns (ds); if (filter) add_filter_trns (ds); - trns_chain_finalize (ds->cur_trns_chain); + ctl_stack_clear (); /* Make permanent_dict refer to the dictionary right before data reaches the sink. */ @@ -725,7 +727,7 @@ proc_start_temporary_transformations (struct dataset *ds) ds->permanent_dict = dict_clone (ds->dict); - trns_chain_finalize (ds->permanent_trns_chain); + ctl_stack_clear (); ds->temporary_trns_chain = ds->cur_trns_chain = trns_chain_create (); dataset_transformations_changed__ (ds, true); } @@ -744,7 +746,7 @@ proc_make_temporary_transformations_permanent (struct dataset *ds) { if (proc_in_temporary_transformations (ds)) { - trns_chain_finalize (ds->temporary_trns_chain); + ctl_stack_clear (); trns_chain_splice (ds->permanent_trns_chain, ds->temporary_trns_chain); ds->temporary_trns_chain = NULL; @@ -771,6 +773,7 @@ proc_cancel_temporary_transformations (struct dataset *ds) ds->dict = ds->permanent_dict; ds->permanent_dict = NULL; + ctl_stack_clear (); trns_chain_destroy (ds->temporary_trns_chain); ds->temporary_trns_chain = NULL; dataset_transformations_changed__ ( @@ -788,6 +791,7 @@ proc_cancel_all_transformations (struct dataset *ds) { bool ok; assert (ds->proc_state == PROC_COMMITTED); + ctl_stack_clear (); ok = trns_chain_destroy (ds->permanent_trns_chain); ok = trns_chain_destroy (ds->temporary_trns_chain) && ok; ds->permanent_trns_chain = ds->cur_trns_chain = trns_chain_create ();