parse-options.h: move PARSE_OPT_SHELL_EVAL between enums
commit3b723f722df6578926705c754a170c11acdbff63
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Tue, 28 Sep 2021 13:14:22 +0000 (28 15:14 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 28 Sep 2021 23:50:42 +0000 (28 16:50 -0700)
treec668be7e77227d238f55606d71c4d7759bb7ad98
parentcefe983a320c03d7843ac78e73bd513a27806845
parse-options.h: move PARSE_OPT_SHELL_EVAL between enums

Fix a bad landmine of a bug which has been with us ever since
PARSE_OPT_SHELL_EVAL was added in 47e9cd28f8a (parseopt: wrap
rev-parse --parseopt usage for eval consumption, 2010-06-12).

It's an argument to parse_options() and should therefore be in "enum
parse_opt_flags", but it was added to the per-option "enum
parse_opt_option_flags" by mistake.

Therefore as soon as we'd have an enum member in the former that
reached its value of "1 << 8" we'd run into a seemingly bizarre bug
where that new option would turn on the unrelated PARSE_OPT_SHELL_EVAL
in "git rev-parse --parseopt" by proxy.

I manually checked that no other enum members suffered from such
overlap, by setting the values to non-overlapping values, and making
the relevant codepaths BUG() out if the given value was above/below
the expected (excluding flags=0 in the case of "enum
parse_opt_flags").

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
parse-options.h