X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fdataset.c;h=b94a3675c6668ac4ce4ae6362c7db145d58846f3;hb=7a09f7e0127967c4f04a51f1b9cf91040c515c34;hp=9c3fe8cfecffc9003781836fe616bd3dc5858bf3;hpb=ff5e81803b409939e921211f1ffd46cb24df33e9;p=pspp diff --git a/src/data/dataset.c b/src/data/dataset.c index 9c3fe8cfec..b94a3675c6 100644 --- a/src/data/dataset.c +++ b/src/data/dataset.c @@ -199,7 +199,7 @@ dataset_destroy (struct dataset *ds) { dataset_set_session (ds, NULL); dataset_clear (ds); - dict_destroy (ds->dict); + dict_unref (ds->dict); caseinit_destroy (ds->caseinit); trns_chain_destroy (ds->permanent_trns_chain); dataset_transformations_changed__ (ds, false); @@ -292,7 +292,7 @@ dataset_set_dict (struct dataset *ds, struct dictionary *dict) dataset_clear (ds); - dict_destroy (ds->dict); + dict_unref (ds->dict); ds->dict = dict; dict_set_change_callback (ds->dict, dict_callback, ds); } @@ -746,9 +746,13 @@ proc_start_temporary_transformations (struct dataset *ds) } } -/* Converts all the temporary transformations, if any, to - permanent transformations. Further transformations will be - permanent. +/* Converts all the temporary transformations, if any, to permanent + transformations. Further transformations will be permanent. + + The FILTER command is implemented as a temporary transformation, so a + procedure that uses this function should usually use proc_open_filtering() + with FILTER false, instead of plain proc_open(). + Returns true if anything changed, false otherwise. */ bool proc_make_temporary_transformations_permanent (struct dataset *ds) @@ -759,7 +763,9 @@ proc_make_temporary_transformations_permanent (struct dataset *ds) trns_chain_splice (ds->permanent_trns_chain, ds->temporary_trns_chain); ds->temporary_trns_chain = NULL; - dict_destroy (ds->permanent_dict); + ds->cur_trns_chain = ds->permanent_trns_chain; + + dict_unref (ds->permanent_dict); ds->permanent_dict = NULL; return true; @@ -776,7 +782,7 @@ proc_cancel_temporary_transformations (struct dataset *ds) { if (proc_in_temporary_transformations (ds)) { - dict_destroy (ds->dict); + dict_unref (ds->dict); ds->dict = ds->permanent_dict; ds->permanent_dict = NULL; @@ -933,7 +939,7 @@ add_filter_trns (struct dataset *ds) /* FILTER transformation. */ static int filter_trns_proc (void *filter_var_, - struct ccase **c UNUSED, casenumber case_nr UNUSED) + struct ccase **c, casenumber case_nr UNUSED) { struct variable *filter_var = filter_var_;