Fixed a bug causing pspp to crash when computed variables had no format
[pspp-builds.git] / src / file-type.c
index 3400c8a0fc109a59bf9999d5af7676cb68a3d352..1e647ecbabbc8c9102475a83194442c87c832e6c 100644 (file)
@@ -21,7 +21,6 @@
 #include <assert.h>
 #include <stdlib.h>
 #include "alloc.h"
-#include "approx.h"
 #include "command.h"
 #include "data-in.h"
 #include "dfm.h"
@@ -284,15 +283,13 @@ cmd_file_type (void)
 static void
 create_col_var (struct col_spec *c)
 {
-  int type;
   int width;
 
-  type = (formats[c->fmt].cat & FCAT_STRING) ? ALPHA : NUMERIC;
-  if (type == ALPHA)
+  if (formats[c->fmt].cat & FCAT_STRING)
     width = c->nc;
   else
     width = 0;
-  c->v = force_create_variable (&default_dict, c->name, type, width);
+  c->v = dict_create_var (default_dict, c->name, width);
 }
 
 /* Parses variable, column, type specifications for a variable. */
@@ -405,11 +402,6 @@ internal_cmd_record_type (void)
   rct.ft = n_trns;
   if (fty.case_sbc.name[0])
     rct.case_sbc = fty.case_sbc;
-#if __CHECKER__
-  else
-    memset (&rct.case_sbc, 0, sizeof rct.case_sbc);
-  rct.lt = -1;
-#endif
 
   /* Make sure we're inside a FILE TYPE structure. */
   if (pgm_state != STATE_INPUT || vfm_source != &file_type_source)
@@ -617,7 +609,8 @@ cmd_end_file_type (void)
 /* Reads any number of cases into temp_case and calls write_case() for
    each one.  Compare data-list.c:read_from_data_list. */
 static void
-file_type_source_read (void)
+file_type_source_read (write_case_func *write_case UNUSED,
+                       write_case_data wc_data UNUSED)
 {
   char *line;
   int len;
@@ -678,7 +671,7 @@ file_type_source_read (void)
              if (iter->flags & RCT_OTHER)
                goto found;
              for (i = 0; i < iter->nv; i++)
-               if (approx_eq (iter->v[i].f, v.f))
+               if (iter->v[i].f == v.f)
                  goto found;
            }
          if (fty.wild)