Hi!

This function would have UB if called with empty candidates vector
(accessing p[-1] where p is malloc (0) result).
As analyzed in the PR, we never call it with empty vector, so this just
adds an assertion to make it clear.

Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

2022-07-27  Jakub Jelinek  <ja...@redhat.com>

        PR middle-end/106332
        * opts-common.cc (candidates_list_and_hint): Add gcc_checking_assert
        that candidates is not an empty vector.

--- gcc/opts-common.cc.jj       2022-02-04 14:36:55.439599237 +0100
+++ gcc/opts-common.cc  2022-07-26 11:21:49.785919993 +0200
@@ -1347,6 +1347,8 @@ candidates_list_and_hint (const char *ar
   const char *candidate;
   char *p;
 
+  gcc_checking_assert (!candidates.is_empty ());
+
   FOR_EACH_VEC_ELT (candidates, i, candidate)
     len += strlen (candidate) + 1;
 

        Jakub

Reply via email to