diff --git a/ChangeLog b/ChangeLog index 7f93b7d5..85468624 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2001-10-14 Marc Autret + + * src/options.c (create_long_option_table): Fix. + 2001-10-10 Akim Demaille * src/bison.simple: Be sure to set YYSTACK_USE_ALLOCA. diff --git a/src/options.c b/src/options.c index c09ef0a5..37963cd4 100644 --- a/src/options.c +++ b/src/options.c @@ -142,7 +142,14 @@ create_long_option_table () /* Copy the struct information in the longoptions. */ longopts[j].name = option_table[i].name; longopts[j].has_arg = option_table[i].has_arg; - longopts[j].flag = option_table[i].set_flag; + /* When an options is declared having 'optional_argument' and + a flag is specified to be set, the option is skipped on + command line. So we never use a flag when a command line + option is declared 'optional_argument. */ + if (longopts[j].has_arg == optional_argument) + longopts[j].flag = NULL; + else + longopts[j].flag = option_table[i].set_flag; longopts[j++].val = option_table[i].val; } longopts[number_options].name = NULL;