Fixed a bug causing pspp to crash when computed variables had no format
[pspp-builds.git] / src / descript.q
index 6ccec2a44a4f361747c58813bd051a762cfacfc5..3a3f7da79ad8c77ce5fedd6b1b624ad9231c1b63 100644 (file)
@@ -30,7 +30,6 @@
 #include "command.h"
 #include "lexer.h"
 #include "error.h"
-#include "approx.h"
 #include "magic.h"
 #include "stats.h"
 #include "som.h"
@@ -178,9 +177,9 @@ static void dump_z_table (void);
 static void run_z_pass (void);
 
 /* Procedure execution functions. */
-static int calc (struct ccase *);
-static void precalc (void);
-static void postcalc (void);
+static int calc (struct ccase *, void *);
+static void precalc (void *);
+static void postcalc (void *);
 static void display (void);
 \f
 /* Parser and outline. */
@@ -289,7 +288,7 @@ cmd_descriptives (void)
 
   /* Data pass! */
   bad_weight = 0;
-  procedure (precalc, calc, postcalc);
+  procedure (precalc, calc, postcalc, NULL);
 
   if (bad_weight)
     msg (SW, _("At least one case in the data file had a weight value "
@@ -539,9 +538,9 @@ run_z_pass (void)
          struct variable *d;
 
          t->z[count].s = v;
-         t->z[count].d = d = dict_create_var (default_dict,
-                                               v->p.dsc.zname, 0);
-          assert (d != NULL);
+         t->z[count].d = d = dict_create_var_assert (default_dict,
+                                                      v->p.dsc.zname, 0);
+          d->init = 0;
          if (v->label)
            {
              d->label = xmalloc (strlen (v->label) + 12);
@@ -556,8 +555,7 @@ run_z_pass (void)
            }
          t->z[count].mean = v->p.dsc.stats[dsc_mean];
          t->z[count].std_dev = v->p.dsc.stats[dsc_stddev];
-         if (t->z[count].std_dev == SYSMIS
-             || approx_eq (t->z[count].std_dev, 0.0))
+         if (t->z[count].std_dev == SYSMIS || t->z[count].std_dev == 0.0)
            t->z[count].mean = SYSMIS;
          count++;
        }
@@ -569,7 +567,7 @@ run_z_pass (void)
 /* Statistical calculation. */
 
 static void
-precalc (void)
+precalc (void *aux UNUSED)
 {
   int i;
 
@@ -593,7 +591,7 @@ precalc (void)
 }
 
 static int
-calc (struct ccase * c)
+calc (struct ccase * c, void *aux UNUSED)
 {
   int i;
 
@@ -685,7 +683,7 @@ iterate:
 }
 
 static void
-postcalc (void)
+postcalc (void *aux UNUSED)
 {
   int i;