Fixed error running 'make distcheck'
[pspp] / src / language / data-io / matrix-reader.c
index 3a7e6ef056f16afd6ca5e5abaafc0d93da88a4df..f1dbae184facb82ecd97826cdf465b03d0a252a7 100644 (file)
@@ -138,7 +138,7 @@ create_matrix_reader_from_case_reader (const struct dictionary *dict, struct cas
   if (vars)
     {
       int i;
-      *vars = xcalloc (sizeof (struct variable **), *n_vars);
+      *vars = xcalloc (*n_vars, sizeof (struct variable **));
 
       for (i = 0; i < *n_vars; ++i)
        {
@@ -213,28 +213,29 @@ next_matrix_from_reader (struct matrix_material *mm,
   mm->mean_matrix = mr->mean_vectors;
   mm->var_matrix = mr->var_vectors;
 
-  struct substring *var_names = xcalloc (n_vars, sizeof *var_names);
+  struct substring *var_names = XCALLOC (n_vars,  struct substring);
   for (int i = 0; i < n_vars; ++i)
     {
       ss_alloc_substring (var_names + i, ss_cstr (var_get_name (vars[i])));
     }
 
   struct ccase *c;
-  for ( ; (c = casereader_read (group) ); case_unref (c))
+  for (; (c = casereader_read (group)); case_unref (c))
     {
-      const union value *uv  = case_data (c, mr->rowtype);
+      const union value *uv = case_data (c, mr->rowtype);
+      const char *row_type = CHAR_CAST (const char *, uv->s);
       int col, row;
       for (col = 0; col < n_vars; ++col)
        {
          const struct variable *cv = vars[col];
          double x = case_data (c, cv)->f;
-         if (0 == strncasecmp ((char *)value_str (uv, 8), "N       ", 8))
+         if (0 == strncasecmp (row_type, "N       ", 8))
            for (row = 0; row < n_vars; ++row)
              gsl_matrix_set (mr->n_vectors, row, col, x);
-         else if (0 == strncasecmp ((char *) value_str (uv, 8), "MEAN    ", 8))
+         else if (0 == strncasecmp (row_type, "MEAN    ", 8))
            for (row = 0; row < n_vars; ++row)
              gsl_matrix_set (mr->mean_vectors, row, col, x);
-         else if (0 == strncasecmp ((char *) value_str (uv, 8), "STDDEV  ", 8))
+         else if (0 == strncasecmp (row_type, "STDDEV  ", 8))
            for (row = 0; row < n_vars; ++row)
              gsl_matrix_set (mr->var_vectors, row, col, x * x);
        }
@@ -263,11 +264,11 @@ next_matrix_from_reader (struct matrix_material *mm,
       if (mrow == -1)
        continue;
 
-      if (0 == strncasecmp ((char *) value_str (uv, 8), "CORR    ", 8))
+      if (0 == strncasecmp (row_type, "CORR    ", 8))
        {
          matrix_fill_row (&mm->corr, c, mrow, vars, n_vars);
        }
-      else if (0 == strncasecmp ((char *) value_str (uv, 8), "COV     ", 8))
+      else if (0 == strncasecmp (row_type, "COV     ", 8))
        {
          matrix_fill_row (&mm->cov, c, mrow, vars, n_vars);
        }