X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Flanguage%2Fdictionary%2Fattributes.c;h=954314ef4fb07339f599e8f6974582e5b1cf00c3;hb=dc26037479e9887a84375ad6aeb657e45a8a1933;hp=2fdc11e2a1ad3744f8551a29c360b8a8cd769a5f;hpb=8f20801a82fe1382da0033996c08160a9f93a3da;p=pspp diff --git a/src/language/dictionary/attributes.c b/src/language/dictionary/attributes.c index 2fdc11e2a1..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))