X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fdata-io%2Fdata-parser.c;h=e14cba7dc20f7898a8ee070a5706d553d6c88683;hb=0fc606c52d7cec253af9b7463b15baabfbc9a33a;hp=d223b05304ae06e18bad367b00348ac53401b115;hpb=5cab4cf3322f29c0ed7134d23740e07382914f20;p=pspp diff --git a/src/language/data-io/data-parser.c b/src/language/data-io/data-parser.c index d223b05304..e14cba7dc2 100644 --- a/src/language/data-io/data-parser.c +++ b/src/language/data-io/data-parser.c @@ -42,7 +42,7 @@ /* Data parser for textual data like that read by DATA LIST. */ struct data_parser { - const struct dictionary *dict; /*Dictionary of destination */ + struct dictionary *dict; /* Dictionary of destination */ enum data_parser_type type; /* Type of data to parse. */ int skip_records; /* Records to skip before first real data. */ @@ -80,7 +80,7 @@ static void set_any_sep (struct data_parser *parser); /* Creates and returns a new data parser. */ struct data_parser * -data_parser_create (const struct dictionary *dict) +data_parser_create (struct dictionary *dict) { struct data_parser *parser = xmalloc (sizeof *parser); @@ -90,7 +90,7 @@ data_parser_create (const struct dictionary *dict) parser->fields = NULL; parser->field_cnt = 0; parser->field_allocated = 0; - parser->dict = dict; + parser->dict = dict_ref (dict); parser->span = true; parser->empty_line_has_field = false; @@ -115,6 +115,7 @@ data_parser_destroy (struct data_parser *parser) { size_t i; + dict_unref (parser->dict); for (i = 0; i < parser->field_cnt; i++) free (parser->fields[i].name); free (parser->fields); @@ -671,7 +672,7 @@ dump_fixed_table (const struct data_parser *parser, parser->records_per_case), parser->records_per_case, fh_get_name (fh)); struct pivot_table *table = pivot_table_create__ ( - pivot_value_new_user_text (title, -1)); + pivot_value_new_user_text (title, -1), "Fixed Data Records"); free (title); pivot_dimension_create ( @@ -717,7 +718,8 @@ dump_delimited_table (const struct data_parser *parser, { struct pivot_table *table = pivot_table_create__ ( pivot_value_new_text_format (N_("Reading free-form data from %s."), - fh_get_name (fh))); + fh_get_name (fh)), + "Free-Form Data Records"); pivot_dimension_create ( table, PIVOT_AXIS_COLUMN, N_("Attributes"), N_("Format")); @@ -815,14 +817,14 @@ data_parser_casereader_read (struct casereader *reader UNUSED, void *r_) } static void -data_parser_casereader_destroy (struct casereader *reader UNUSED, void *r_) +data_parser_casereader_destroy (struct casereader *reader, void *r_) { struct data_parser_casereader *r = r_; if (dfm_reader_error (r->reader)) casereader_force_error (reader); - data_parser_destroy (r->parser); dfm_close_reader (r->reader); caseproto_unref (r->proto); + data_parser_destroy (r->parser); free (r); }