"All variables in this variable list must have the "
"same width. %s will be omitted from the list."),
var_get_name ((*v)[0]), add_name, add_name);
- else if ((pv_opts & PV_NO_DUPLICATE) && included[idx])
+ else if ((pv_opts & PV_NO_DUPLICATE) && included && included[idx])
msg (SE, _("Variable %s appears twice in variable list."), add_name);
- else if ((pv_opts & PV_DUPLICATE) || !included[idx])
+ else if ((pv_opts & PV_DUPLICATE) || !included || !included[idx])
{
if (*nv >= *mv)
{
struct stringi_set set;
char *name1 = NULL;
- char *name2 = NULL;
+
bool ok = false;
assert ((pv_opts & ~(PV_APPEND | PV_SINGLE
lex_get (lexer);
if (lex_token (lexer) == T_TO)
{
- unsigned long int num1, num2;
+ char *name2 = NULL;
+ unsigned long int num1, num2;
int n_digits1, n_digits2;
int root_len1, root_len2;
unsigned long int number;
free (name1);
name1 = NULL;
free (name2);
- name2 = NULL;
}
else
{
*n_varsp = 0;
free (name1);
- free (name2);
}
return ok;
}
assert (names != NULL);
assert (nnames != NULL);
- assert ((pv_opts & ~PV_APPEND) == 0);
if (!(pv_opts & PV_APPEND))
{
struct variable **v;
size_t nv;
- if (!parse_variables (lexer, dict, &v, &nv, PV_NONE))
+ if (!parse_variables (lexer, dict, &v, &nv, pv_opts))
goto fail;
*names = xnrealloc (*names, *nnames + nv, sizeof **names);
for (i = 0; i < nv; i++)
free (v);
*nnames += nv;
}
- else if (!parse_DATA_LIST_vars (lexer, dict, names, nnames, PV_APPEND))
+ else if (!parse_DATA_LIST_vars (lexer, dict, names, nnames, PV_APPEND | pv_opts))
goto fail;
}
- return 1;
+ if (*nnames == 0)
+ goto fail;
+
+ return true;
fail:
for (i = 0; i < *nnames; i++)
free (*names);
*names = NULL;
*nnames = 0;
- return 0;
+ return false;
}
/* Parses a list of variables where some of the variables may be
*iact = NULL;
return false;
}
-
+
assert (v);
if ( *iact == NULL)