On Mon, 15 May 2023 12:35:23 +0200
Aldy Hernandez via Gcc-patches <gcc-patches@gcc.gnu.org> wrote:

> +// For resizable ranges, resize the range up to HARD_MAX_RANGES if the
> +// NEEDED pairs is greater than the current capacity of the range.
> +
> +inline void
> +irange::maybe_resize (int needed)
> +{
> +  if (!m_resizable || m_max_ranges == HARD_MAX_RANGES)
> +    return;
> +
> +  if (needed > m_max_ranges)
> +    {
> +      m_max_ranges = HARD_MAX_RANGES;
> +      wide_int *newmem = new wide_int[m_max_ranges * 2];
> +      memcpy (newmem, m_base, sizeof (wide_int) * num_pairs () * 2);
> +      m_base = newmem;

Please excuse my ignorance, but where's the old m_base freed? I think
the assignment above does not call the destructor, or does it?

thanks,

> +    }
> +}
> +
> +template<unsigned N, bool RESIZABLE>
> +inline
> +int_range<N, RESIZABLE>::~int_range ()
> +{
> +  if (RESIZABLE && m_base != m_ranges)
> +    delete m_base;
> +}

Reply via email to