/* PSPP - a program for statistical analysis.
- Copyright (C) 2011 Free Software Foundation, Inc.
+ Copyright (C) 2011, 2015 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
/* Variables pertaining to the paired mode */
const struct variable **v1 = NULL;
- size_t n_v1;
+ size_t n_v1 = 0;
const struct variable **v2 = NULL;
- size_t n_v2;
+ size_t n_v2 = 0;
- size_t n_pairs;
+ size_t n_pairs = 0;
vp *pairs = NULL;
/* One sample mode */
- double testval;
+ double testval = SYSMIS;
/* Independent samples mode */
const struct variable *gvar;
union value gval0;
union value gval1;
- bool cut;
+ bool cut = false;
tt.wv = dict_get_weight (dict);
tt.dict = dict;
mode_count++;
tt.mode = MODE_SINGLE;
lex_match (lexer, T_EQUALS);
- lex_force_num (lexer);
+ if (!lex_force_num (lexer))
+ goto parse_failed;
testval = lex_number (lexer);
lex_get (lexer);
}
value_init (&gval0, var_get_width (gvar));
parse_value (lexer, &gval0, gvar);
cut = true;
- if (lex_match (lexer, T_COMMA))
+ if (lex_token (lexer) != T_RPAREN)
{
+ lex_match (lexer, T_COMMA);
value_init (&gval1, var_get_width (gvar));
parse_value (lexer, &gval1, gvar);
cut = false;
}
- lex_force_match (lexer, T_RPAREN);
+ if (! lex_force_match (lexer, T_RPAREN))
+ goto parse_failed;
}
else
{
if ( cut == true && var_is_alpha (gvar))
{
- msg (SE, _("When applying GROUPS to a string variable, two "
- "values must be specified."));
+ msg (SE, _("When applying %s to a string variable, two "
+ "values must be specified."), "GROUPS");
goto parse_failed;
}
}
if (tt.n_vars > 0)
{
- msg (SE, _("VARIABLES subcommand may not be used with PAIRS."));
+ msg (SE, _("%s subcommand may not be used with %s."), "VARIABLES", "PAIRS");
goto parse_failed;
}
else
n_pairs = n_v1 * n_v2;
- pairs = xcalloc (sizeof *pairs, n_pairs);
-
+ pairs = xcalloc (n_pairs, sizeof *pairs);
if ( with)
{
{
if ( tt.mode == MODE_PAIRED)
{
- msg (SE, _("VARIABLES subcommand may not be used with PAIRS."));
+ msg (SE, _("%s subcommand may not be used with %s."), "VARIABLES", "PAIRS");
goto parse_failed;
}
else if (lex_match_id (lexer, "CRITERIA"))
{
lex_match (lexer, T_EQUALS);
- if ( lex_force_match_id (lexer, "CIN"))
+ if ( lex_match_id (lexer, "CIN") || lex_force_match_id (lexer, "CI"))
if ( lex_force_match (lexer, T_LPAREN))
{
- lex_force_num (lexer);
+ if (!lex_force_num (lexer))
+ goto parse_failed;
tt.confidence = lex_number (lexer);
lex_get (lexer);
- lex_force_match (lexer, T_RPAREN);
+ if (! lex_force_match (lexer, T_RPAREN))
+ goto parse_failed;
}
}
else
if (tt.n_vars == 0 && tt.mode != MODE_PAIRED)
{
- msg (SE, _("One or more VARIABLES must be specified."));
+ lex_sbc_missing ("VARIABLES");
goto parse_failed;
}
free (pairs);
free (v1);
free (v2);
-
free (tt.vars);
return ok ? CMD_SUCCESS : CMD_FAILURE;
parse_failed:
+
+ free (pairs);
+ free (v1);
+ free (v2);
+ free (tt.vars);
+
return CMD_FAILURE;
}