Revert "added a description how to update linux distributions"
[pspp] / src / language / stats / t-test-parser.c
index bc9de94a4014db42ab3580539d6ed7a22d17d85e..26fc7ba56cb7307fc37c32b226fdbc12550c8cb0 100644 (file)
@@ -44,10 +44,10 @@ cmd_t_test (struct lexer *lexer, struct dataset *ds)
 
   /* 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 = 0;
   vp *pairs = NULL;
 
@@ -94,7 +94,7 @@ cmd_t_test (struct lexer *lexer, struct dataset *ds)
 
          if (NULL == (gvar = parse_variable (lexer, dict)))
            goto parse_failed;
-      
+
          if (lex_match (lexer, T_LPAREN))
            {
 
@@ -109,7 +109,8 @@ cmd_t_test (struct lexer *lexer, struct dataset *ds)
                  cut = false;
                }
 
-             lex_force_match (lexer, T_RPAREN);
+             if (! lex_force_match (lexer, T_RPAREN))
+               goto parse_failed;
            }
          else
            {
@@ -179,7 +180,7 @@ cmd_t_test (struct lexer *lexer, struct dataset *ds)
              n_pairs = n_v1;
            else
              n_pairs = n_v1 * n_v2;
-         
+
            pairs = xcalloc (n_pairs, sizeof *pairs);
 
            if ( with)
@@ -192,7 +193,7 @@ cmd_t_test (struct lexer *lexer, struct dataset *ds)
                        vp *pair = &pairs[i];
                        (*pair)[0] = v1[i];
                        (*pair)[1] = v2[i];
-                     } 
+                     }
                  }
                else
                  {
@@ -281,10 +282,11 @@ cmd_t_test (struct lexer *lexer, struct dataset *ds)
                  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 
+      else
        {
          lex_error (lexer, NULL);
          goto parse_failed;
@@ -365,12 +367,17 @@ cmd_t_test (struct lexer *lexer, struct dataset *ds)
   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;
 }