const char *str)
{
int len = var_get_width (vname);
- uint8_t *s = value_str_rw (case_data_rw (outcase, vname), len);
+ uint8_t *s = case_str_rw (outcase, vname);
- strncpy ((char *) s, str, len);
+ strncpy (CHAR_CAST (char *, s), str, len);
}
static void
blank_varname_column (struct ccase *outcase, const struct variable *vname)
{
int len = var_get_width (vname);
- uint8_t *s = value_str_rw (case_data_rw (outcase, vname), len);
+ uint8_t *s = case_str_rw (outcase, vname);
memset (s, ' ', len);
}
/* Make an initial pass to populate our temporary matrix */
struct casereader *pass0 = casereader_clone (casereader0);
struct ccase *c;
- union value *prev_values = xcalloc (mformat->n_split_vars, sizeof *prev_values);
+ union value *prev_values = XCALLOC (mformat->n_split_vars, union value);
int row = (mformat->triangle == LOWER && mformat->diagonal == NO_DIAGONAL) ? 1 : 0;
bool first_case = true;
for (; (c = casereader_read (pass0)) != NULL; case_unref (c))
if (mformat->triangle == UPPER && mformat->diagonal == NO_DIAGONAL)
c_offset++;
const union value *v = case_data (c, mformat->rowtype);
- const char *val = (const char *) value_str (v, ROWTYPE_WIDTH);
+ const char *val = CHAR_CAST (const char *, v->s);
if (0 == strncasecmp (val, "corr ", ROWTYPE_WIDTH) ||
0 == strncasecmp (val, "cov ", ROWTYPE_WIDTH))
{
casereader_destroy (pass0);
free (prev_values);
+ if (!matrices)
+ goto error;
+
/* Now make a second pass to fill in the other triangle from our
temporary matrix */
const int idx = var_get_dict_index (mformat->varname);
int col;
struct ccase *outcase = case_create (proto);
union value *v = case_data_rw (outcase, mformat->rowtype);
- uint8_t *n = value_str_rw (v, ROWTYPE_WIDTH);
- memcpy (n, "N ", ROWTYPE_WIDTH);
+ memcpy (v->s, "N ", ROWTYPE_WIDTH);
blank_varname_column (outcase, mformat->varname);
for (col = 0; col < mformat->n_continuous_vars; ++col)
{
case_unref (prev_case);
const union value *v = case_data (c, mformat->rowtype);
- const char *val = (const char *) value_str (v, ROWTYPE_WIDTH);
+ const char *val = CHAR_CAST (const char *, v->s);
if (mformat->n >= 0)
{
if (0 == strncasecmp (val, "n ", ROWTYPE_WIDTH) ||
if (prev_case)
case_unref (prev_case);
- for (i = 0 ; i < n_splits; ++i)
- free (matrices[i]);
+ if (matrices)
+ for (i = 0 ; i < n_splits; ++i)
+ free (matrices[i]);
free (matrices);
casereader_destroy (casereader0);
casewriter_destroy (writer);