path: root/builtin
diff options
authorÆvar Arnfjörð Bjarmason <>2017-05-25 19:45:25 (GMT)
committerJunio C Hamano <>2017-05-26 03:52:37 (GMT)
commit374166cb381eef5498ac41f1f2835163ac656bdc (patch)
tree70adb68ff457a76a4e92e7b98d306bbf88535512 /builtin
parent723fc5a6e15326b78b554407e3058eb345ae6cd7 (diff)
grep: catch a missing enum in switch statement
Add a die(...) to a default case for the switch statement selecting between grep pattern types under --recurse-submodules. Normally this would be caught by -Wswitch, but the grep_pattern_type type is converted to int by going through parse_options(). Changing the argument type passed to compile_submodule_options() won't work, the value will just get coerced. The -Wswitch-default warning will warn about it, but that produces a lot of noise across the codebase, this potential issue would be drowned in that noise. Thus catching this at runtime is the least bad option. This won't ever trigger in practice, but if a new pattern type were to be added this catches an otherwise silent bug during development. See commit 0281e487fd ("grep: optionally recurse into submodules", 2016-12-16) for the initial addition of this code. Signed-off-by: Ævar Arnfjörð Bjarmason <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'builtin')
1 files changed, 2 insertions, 0 deletions
diff --git a/builtin/grep.c b/builtin/grep.c
index 3ffb5b4..a191e29 100644
--- a/builtin/grep.c
+++ b/builtin/grep.c
@@ -495,6 +495,8 @@ static void compile_submodule_options(const struct grep_opt *opt,
+ default:
+ die("BUG: Added a new grep pattern type without updating switch statement");
for (pattern = opt->pattern_list; pattern != NULL;