libstdc++: Fix memory leak in std::barrier destructor [PR123378]

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.

Reviewed-by: Tomasz Kamiński <tkaminsk@redhat.com>
This commit is contained in:
Jonathan Wakely
2026-01-05 17:29:40 +00:00
committed by Jonathan Wakely
parent 827cd76fa7
commit 5b20eefe0c

View File

@@ -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()
{