From 5deef6bb6bbcaff8e7d2c18eddf2631431b8e23e Mon Sep 17 00:00:00 2001 From: Jacob Alber Date: Thu, 1 Feb 2024 13:07:13 -0500 Subject: [PATCH] fix: avoid double-freeing due to copy in io align unit test --- vowpalwabbit/core/tests/io_alignment_test.cc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/vowpalwabbit/core/tests/io_alignment_test.cc b/vowpalwabbit/core/tests/io_alignment_test.cc index 13f8b989dac..7aec4b8c276 100644 --- a/vowpalwabbit/core/tests/io_alignment_test.cc +++ b/vowpalwabbit/core/tests/io_alignment_test.cc @@ -24,7 +24,16 @@ struct positioned_ptr : allocation(allocation), allocation_unit(malloc(allocation)), p(reinterpret_cast(allocation_unit)) { } - ~positioned_ptr() { free(allocation_unit); } + positioned_ptr(const positioned_ptr&) = delete; + positioned_ptr(positioned_ptr&& original) : allocation(original.allocation), allocation_unit(original.allocation_unit) + { + original.allocation_unit = nullptr; + } + + ~positioned_ptr() + { + if (allocation_unit != nullptr) { free(allocation_unit); } + } void realign(align_t alignment, align_t offset) {