I pushed this mostly because I prefer marking default cases with
unreachable so the reader knows that not all representable values
can/should occur there. However, I did notice it from an interesting
-fanalyzer bug/limitation.

-- 8< --

Analyzer mistakenly reports that the CSWTCH lookup table can overflow
here since it cannot infer the value of C from the previously called
switch statement in main. See:
<https://gcc.gnu.org/bugzilla/PR126885>.

* src/stdbuf.c (optc_to_fileno): Add a default label with a call to
unreachable.
---
 src/stdbuf.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/stdbuf.c b/src/stdbuf.c
index ff19c6056..fb7de79b3 100644
--- a/src/stdbuf.c
+++ b/src/stdbuf.c
@@ -184,6 +184,8 @@ optc_to_fileno (int c)
     case 'o':
       ret = STDOUT_FILENO;
       break;
+    default:
+      unreachable ();
     }
 
   return ret;
-- 
2.55.0


Reply via email to