lexer: New function lex_force_int_range().
[pspp] / src / language / dictionary / vector.c
index 6560288c472e1232aed890d6d3e8dde7c4540998..e7e70cecb28a288549b22fdbf9641b2b4b8cd009 100644 (file)
@@ -124,13 +124,10 @@ cmd_vector (struct lexer *lexer, struct dataset *ds)
             {
               if (lex_is_integer (lexer) && var_cnt == 0)
                 {
+                  if (!lex_force_int_range (lexer, NULL, 1, INT_MAX))
+                    goto fail;
                   var_cnt = lex_integer (lexer);
                   lex_get (lexer);
-                  if (var_cnt <= 0)
-                    {
-                      msg (SE, _("Vectors must have at least one element."));
-                      goto fail;
-                    }
                 }
               else if (lex_token (lexer) == T_ID && !seen_format)
                 {
@@ -167,8 +164,8 @@ cmd_vector (struct lexer *lexer, struct dataset *ds)
                     }
                   if (dict_lookup_var (dict, name))
                    {
-                      free (name);
                      msg (SE, _("%s is an existing variable name."), name);
+                      free (name);
                      goto fail;
                    }
                   free (name);