On Wed, Jan 7, 2026 at 12:50 PM Jonathan Wakely <[email protected]> wrote:

> When I replaced the std::unique_ptr member in r16-997-gef632273a90657 I
> should have added an explicit delete[] operation to replace the effects
> of the unique_ptr destructor.
>
> libstdc++-v3/ChangeLog:
>
>         PR libstdc++/123378
>         * include/std/barrier (~__tree_barrier_base): Define.
> ---
>
> Tested x86_64-linux.
>
LGTM

>
>  libstdc++-v3/include/std/barrier | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/libstdc++-v3/include/std/barrier
> b/libstdc++-v3/include/std/barrier
> index 060285d6bf85..0986ff9dada6 100644
> --- a/libstdc++-v3/include/std/barrier
> +++ b/libstdc++-v3/include/std/barrier
> @@ -114,6 +114,12 @@ It looks different from literature pseudocode for two
> main reasons:
>         _M_state.store(_M_alloc_state().release(), memory_order_release);
>      }
>
> +    ~__tree_barrier_base()
> +    { delete[] _M_state.load(memory_order_relaxed); }
> +
> +    __tree_barrier_base(const __tree_barrier_base&&) = delete;
> +    __tree_barrier_base& operator=(const __tree_barrier_base&&) = delete;
> +
>      unique_ptr<__state_t[]>
>      _M_alloc_state()
>      {
> --
> 2.52.0
>
>

Reply via email to