- if ( lex_force_match (lexer, '(') )
- {
- if ( lex_force_int (lexer))
- lex_get (lexer);
- else
- return CMD_FAILURE;
- lex_force_match (lexer, ')');
- }
+ if (!lex_force_match (lexer, '(') || !lex_force_int (lexer))
+ {
+ free (v);
+ return CMD_FAILURE;
+ }
+ width = lex_integer (lexer);
+ lex_get (lexer);
+ if (!lex_force_match (lexer, ')'))
+ {
+ free (v);
+ return CMD_FAILURE;
+ }
+
+ if (width < 0)
+ {
+ msg (SE, _("Variable display width must be a positive integer."));
+ free (v);
+ return CMD_FAILURE;
+ }
+ width = MIN (width, 2 * MAX_STRING);