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
>
>