summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--absl/memory/memory_test.cc21
1 files changed, 11 insertions, 10 deletions
diff --git a/absl/memory/memory_test.cc b/absl/memory/memory_test.cc
index 1990c7ba..5d5719b3 100644
--- a/absl/memory/memory_test.cc
+++ b/absl/memory/memory_test.cc
@@ -548,22 +548,23 @@ struct MinimalMockAllocator {
TEST(AllocatorTraits, FunctionsMinimal) {
int trace = 0;
int hint;
- TestValue x(&trace);
+ alignas(TestValue) char buffer[sizeof(TestValue)];
+ auto* x = reinterpret_cast<TestValue*>(buffer);
MinimalMockAllocator mock;
using Traits = absl::allocator_traits<MinimalMockAllocator>;
- EXPECT_CALL(mock, allocate(7)).WillRepeatedly(Return(&x));
- EXPECT_CALL(mock, deallocate(&x, 7));
+ EXPECT_CALL(mock, allocate(7)).WillRepeatedly(Return(x));
+ EXPECT_CALL(mock, deallocate(x, 7));
- EXPECT_EQ(&x, Traits::allocate(mock, 7));
+ EXPECT_EQ(x, Traits::allocate(mock, 7));
static_cast<void>(Traits::allocate(mock, 7, static_cast<const void*>(&hint)));
- EXPECT_EQ(&x, Traits::allocate(mock, 7, static_cast<const void*>(&hint)));
- Traits::deallocate(mock, &x, 7);
+ EXPECT_EQ(x, Traits::allocate(mock, 7, static_cast<const void*>(&hint)));
+ Traits::deallocate(mock, x, 7);
+ EXPECT_EQ(0, trace);
+ Traits::construct(mock, x, &trace);
EXPECT_EQ(1, trace);
- Traits::construct(mock, &x, &trace);
- EXPECT_EQ(2, trace);
- Traits::destroy(mock, &x);
- EXPECT_EQ(1, trace);
+ Traits::destroy(mock, x);
+ EXPECT_EQ(0, trace);
EXPECT_EQ(std::numeric_limits<size_t>::max() / sizeof(TestValue),
Traits::max_size(mock));