lexer: New function lex_force_int_range().
[pspp] / src / language / dictionary / attributes.c
index 2f1d6906b9b6b4ee1b76b62857f0968673f8fc99..88832fd501f641ebcc041c1558fa3d214047c454 100644 (file)
@@ -97,13 +97,8 @@ parse_attribute_name (struct lexer *lexer, const char *dict_encoding,
 
   if (lex_match (lexer, T_LBRACK))
     {
-      if (!lex_force_int (lexer))
+      if (!lex_force_int_range (lexer, NULL, 1, 65535))
         goto error;
-      if (lex_integer (lexer) < 1 || lex_integer (lexer) > 65535)
-        {
-          msg (SE, _("Attribute array index must be between 1 and 65535."));
-          goto error;
-        }
       *index = lex_integer (lexer);
       lex_get (lexer);
       if (!lex_force_match (lexer, T_RBRACK))
@@ -197,7 +192,7 @@ parse_attributes (struct lexer *lexer, const char *dict_encoding,
         command = DELETE;
       else if (command == UNKNOWN)
         {
-          lex_error_expecting (lexer, "ATTRIBUTE=", "DELETE=", NULL_SENTINEL);
+          lex_error_expecting (lexer, "ATTRIBUTE=", "DELETE=");
           return CMD_FAILURE;
         }