Work on getting rid of trns_chain_finalize().
[pspp] / src / data / dataset.c
index 5b3f0ba5fb3a1b65c241f8757af77d08bfca2de9..afab39dc0c5e63a4bdfa2a6ba4d49b6b37c65137 100644 (file)
@@ -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 ();