[gcc r16-6553] libstdc++: Fix memory leak in std::barrier destructor [PR123378]
Jonathan Wakely
redi@gcc.gnu.org
Wed Jan 7 15:23:48 GMT 2026
https://gcc.gnu.org/g:5b20eefe0c39c352f40bc6ff6fd995bfa0e49636
commit r16-6553-g5b20eefe0c39c352f40bc6ff6fd995bfa0e49636
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Mon Jan 5 17:29:40 2026 +0000
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>
Diff:
---
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()
{
More information about the Libstdc++-cvs
mailing list