X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fdata%2Fdataset.c;h=c426cddb3c5662846865828d41650665481f6647;hb=ad7ae8bb105c925b951e241fd6a3d1cb93d614a0;hp=9c3fe8cfecffc9003781836fe616bd3dc5858bf3;hpb=ff5e81803b409939e921211f1ffd46cb24df33e9;p=pspp diff --git a/src/data/dataset.c b/src/data/dataset.c index 9c3fe8cfec..c426cddb3c 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;