Fixed error running 'make distcheck'
[pspp] / src / language / data-io / data-parser.c
index d223b05304ae06e18bad367b00348ac53401b115..e14cba7dc20f7898a8ee070a5706d553d6c88683 100644 (file)
@@ -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);
 }