X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fdictionary%2Fattributes.c;h=954314ef4fb07339f599e8f6974582e5b1cf00c3;hb=dc26037479e9887a84375ad6aeb657e45a8a1933;hp=2f1d6906b9b6b4ee1b76b62857f0968673f8fc99;hpb=6e097c89af440da90b43ce90864394c4d0c843d5;p=pspp diff --git a/src/language/dictionary/attributes.c b/src/language/dictionary/attributes.c index 2f1d6906b9..954314ef4f 100644 --- a/src/language/dictionary/attributes.c +++ b/src/language/dictionary/attributes.c @@ -87,23 +87,22 @@ static char * parse_attribute_name (struct lexer *lexer, const char *dict_encoding, size_t *index) { - char *name; - - if (!lex_force_id (lexer) - || !id_is_valid (lex_tokcstr (lexer), dict_encoding, true)) + if (!lex_force_id (lexer)) return NULL; - name = xstrdup (lex_tokcstr (lexer)); + char *error = id_is_valid__ (lex_tokcstr (lexer), dict_encoding); + if (error) + { + lex_error (lexer, "%s", error); + free (error); + return NULL; + } + char *name = xstrdup (lex_tokcstr (lexer)); lex_get (lexer); 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 +196,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; }