X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fdata-io%2Fmatrix-reader.c;h=f1dbae184facb82ecd97826cdf465b03d0a252a7;hb=0fc606c52d7cec253af9b7463b15baabfbc9a33a;hp=3a7e6ef056f16afd6ca5e5abaafc0d93da88a4df;hpb=814952415c6322e9ab08376426fb99d851765e20;p=pspp diff --git a/src/language/data-io/matrix-reader.c b/src/language/data-io/matrix-reader.c index 3a7e6ef056..f1dbae184f 100644 --- a/src/language/data-io/matrix-reader.c +++ b/src/language/data-io/matrix-reader.c @@ -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); }