On Tue, 9 Feb 2021, Jakub Jelinek wrote:

> Hi!
> 
> The print_generic_expr_to_str function ends with
> return xstrdup (...); and therefore expects the caller to free
> the argument.
> 
> The following patch does that after it has been copied.
> Instead of doing const_cast to cast away const char * to char *,
> because the code uses s0 and s1 in so few places, I chose just
> to change the types of the two variables so that const_cast
> is not needed.  After all, it is a heap allocated string that
> this function owns and so if it wanted, it could change it too.
> 
> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

OK.

Richard.

> 2021-02-09  Jakub Jelinek  <ja...@redhat.com>
> 
>       PR middle-end/99004
>       * calls.c (maybe_warn_rdwr_sizes): Change s0 and s1 type from
>       const char * to char * and free those pointers after use.
> 
> --- gcc/calls.c.jj    2021-01-04 10:25:39.253229068 +0100
> +++ gcc/calls.c       2021-02-08 17:39:10.749551785 +0100
> @@ -2032,7 +2032,7 @@ maybe_warn_rdwr_sizes (rdwr_map *rwm, tr
>        tree sizrng[2] = { size_zero_node, build_all_ones_cst (sizetype) };
>        if (get_size_range (access_size, sizrng, true))
>       {
> -       const char *s0 = print_generic_expr_to_str (sizrng[0]);
> +       char *s0 = print_generic_expr_to_str (sizrng[0]);
>         if (tree_int_cst_equal (sizrng[0], sizrng[1]))
>           {
>             gcc_checking_assert (strlen (s0) < sizeof sizstr);
> @@ -2040,11 +2040,13 @@ maybe_warn_rdwr_sizes (rdwr_map *rwm, tr
>           }
>         else
>           {
> -           const char *s1 = print_generic_expr_to_str (sizrng[1]);
> +           char *s1 = print_generic_expr_to_str (sizrng[1]);
>             gcc_checking_assert (strlen (s0) + strlen (s1)
>                                  < sizeof sizstr - 4);
>             sprintf (sizstr, "[%s, %s]", s0, s1);
> +           free (s1);
>           }
> +       free (s0);
>       }
>        else
>       *sizstr = '\0';
> 
>       Jakub
> 
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg,
Germany; GF: Felix Imendörffer; HRB 36809 (AG Nuernberg)

Reply via email to