X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fdataset.c;h=10005e0aca67968a72c12a45d4042104fc9ff327;hb=eeedca3fcd959f73ba2c2fd4cbab5bd03ceb4f8d;hp=7448bd38efb7a2ec66807faf62e553a3a8712050;hpb=88d8c4b6f2da16263804c7819ebfa1257b32cb11;p=pspp diff --git a/src/data/dataset.c b/src/data/dataset.c index 7448bd38ef..10005e0aca 100644 --- a/src/data/dataset.c +++ b/src/data/dataset.c @@ -143,9 +143,7 @@ dataset_create_finish__ (struct dataset *ds, struct session *session) struct dataset * dataset_create (struct session *session, const char *name) { - struct dataset *ds; - - ds = xzalloc (sizeof *ds); + struct dataset *ds = XZALLOC (struct dataset); ds->name = xstrdup (name); ds->display = DATASET_FRONT; ds->dict = dict_create (get_default_encoding ()); @@ -199,7 +197,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 +290,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 +744,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) @@ -761,7 +763,7 @@ proc_make_temporary_transformations_permanent (struct dataset *ds) ds->cur_trns_chain = ds->permanent_trns_chain; - dict_destroy (ds->permanent_dict); + dict_unref (ds->permanent_dict); ds->permanent_dict = NULL; return true; @@ -778,7 +780,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; @@ -814,7 +816,7 @@ store_case_num (void *var_, struct ccase **cc, casenumber case_num) struct variable *var = var_; *cc = case_unshare (*cc); - case_data_rw (*cc, var)->f = case_num; + *case_num_rw (*cc, var) = case_num; return TRNS_CONTINUE; } @@ -935,7 +937,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_;