Commit 0af0103d by Copybara-Service

Merge pull request #1475 from anpol:placement-new-array-needs-more-space

PiperOrigin-RevId: 539747818
Change-Id: Ia0ab0fdda0ffe9b23d83d55c899f301df20b1179
parents 5d1f1cf9 fc7467b0
...@@ -148,7 +148,7 @@ TEST(ThrowingValueTest, ThrowingBitwiseOps) { ...@@ -148,7 +148,7 @@ TEST(ThrowingValueTest, ThrowingBitwiseOps) {
ThrowingValue<> bomb1, bomb2; ThrowingValue<> bomb1, bomb2;
TestOp([&bomb1]() { ~bomb1; }); TestOp([&bomb1]() { ~bomb1; });
TestOp([&]() { bomb1& bomb2; }); TestOp([&]() { bomb1 & bomb2; });
TestOp([&]() { bomb1 | bomb2; }); TestOp([&]() { bomb1 | bomb2; });
TestOp([&]() { bomb1 ^ bomb2; }); TestOp([&]() { bomb1 ^ bomb2; });
} }
...@@ -332,13 +332,16 @@ TEST(ThrowingValueTest, NonThrowingPlacementDelete) { ...@@ -332,13 +332,16 @@ TEST(ThrowingValueTest, NonThrowingPlacementDelete) {
constexpr int kArrayLen = 2; constexpr int kArrayLen = 2;
// We intentionally create extra space to store the tag allocated by placement // We intentionally create extra space to store the tag allocated by placement
// new[]. // new[].
constexpr int kStorageLen = 4; constexpr size_t kExtraSpaceLen = sizeof(size_t) * 2;
alignas(ThrowingValue<>) unsigned char buf[sizeof(ThrowingValue<>)]; alignas(ThrowingValue<>) unsigned char buf[sizeof(ThrowingValue<>)];
alignas(ThrowingValue<>) unsigned char alignas(ThrowingValue<>) unsigned char
array_buf[sizeof(ThrowingValue<>[kStorageLen])]; array_buf[kExtraSpaceLen + sizeof(ThrowingValue<>[kArrayLen])];
auto* placed = new (&buf) ThrowingValue<>(1); auto* placed = new (&buf) ThrowingValue<>(1);
auto placed_array = new (&array_buf) ThrowingValue<>[kArrayLen]; auto placed_array = new (&array_buf) ThrowingValue<>[kArrayLen];
auto* placed_array_end = reinterpret_cast<unsigned char*>(placed_array) +
sizeof(ThrowingValue<>[kArrayLen]);
EXPECT_LE(placed_array_end, array_buf + sizeof(array_buf));
SetCountdown(); SetCountdown();
ExpectNoThrow([placed, &buf]() { ExpectNoThrow([placed, &buf]() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment