diff options
author | Ævar Arnfjörð Bjarmason <avarab@gmail.com> | 2021-09-28 15:14:22 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-09-28 16:50:42 -0700 |
commit | 3b723f722df6578926705c754a170c11acdbff63 (patch) | |
tree | c668be7e77227d238f55606d71c4d7759bb7ad98 /apply.c | |
parent | The ninth batch (diff) | |
download | tgif-3b723f722df6578926705c754a170c11acdbff63.tar.xz |
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>
Diffstat (limited to 'apply.c')
0 files changed, 0 insertions, 0 deletions