https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118400

--- Comment #6 from rguenther at suse dot de <rguenther at suse dot de> ---
On Tue, 14 Jan 2025, jakub at gcc dot gnu.org wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118400
> 
> --- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
> So I think we want
> 2025-01-14  Jakub Jelinek  <ja...@redhat.com>
> 
>         PR ipa/118400
>         * vec.h (vec<T, va_heap, vl_ptr>::release): Call vec_destruct
>         in the using_auto_storage () case.
> 
> --- gcc/vec.h.jj        2025-01-02 11:23:13.144563938 +0100
> +++ gcc/vec.h   2025-01-14 19:44:59.105506682 +0100
> @@ -2020,6 +2020,8 @@ vec<T, va_heap, vl_ptr>::release (void)
> 
>    if (using_auto_storage ())
>      {
> +      if (!std::is_trivially_destructible <T>::value)
> +       vec_destruct (m_vec->address (), m_vec->length ());
>        m_vec->m_vecpfx.m_num = 0;
>        return;
>      }
> Fixes the leak for me, will test tonight.

Maybe use

   m_vec->truncate (0);
   return;

for simplicity?

Reply via email to