it works!!
[pspp] / src / data / dataset.c
index ded7c7ab02196e9d6193440b3c13bc0635d93ea0..aa68ae9cb6b6c32ac1484b5aeb7cc83da9d705c2 100644 (file)
@@ -351,13 +351,12 @@ bool
 dataset_delete_vars (struct dataset *ds, struct variable **vars, size_t n)
 {
   dict_delete_vars (ds->dict, vars, n);
-
-  if (ds->source)
-    {
-      struct case_map *map = case_map_to_compact_dict (ds->d, 0);
-      ds->source = case_map_create_input_translator (map, ds->source);
-    }
+  ds->source = case_map_create_input_translator (
+    case_map_to_compact_dict (ds->dict, 0), ds->source);
   dict_compact_values (ds->dict);
+  caseinit_clear (ds->caseinit);
+  caseinit_mark_as_preinited (ds->caseinit, ds->dict);
+  return true;
 }
 
 /* Returns a number unique to DS.  It can be used to distinguish one dataset
@@ -816,6 +815,12 @@ proc_pop_transformations (struct dataset *ds, struct trns_chain *chain)
   *chain = ds->stack[--ds->n_stack];
 }
 
+bool
+proc_has_transformations (const struct dataset *ds)
+{
+  return ds->permanent_trns_chain.n || ds->temporary_trns_chain.n;
+}
+
 static enum trns_result
 store_case_num (void *var_, struct ccase **cc, casenumber case_num)
 {