diff options
author | 2023-07-25 13:04:25 -0700 | |
---|---|---|
committer | 2023-07-25 13:05:05 -0700 | |
commit | 511ad6492eabb7797910ce8689577c45f57bce40 (patch) | |
tree | 30dc7f1927894bf57a58e6b17d9445c16c048b61 /absl/container/inlined_vector_test.cc | |
parent | ac39cc1ec6fed8d3738b4df9589803c23d6d1e3a (diff) |
InlinedVector: Fix control-flow-inregrity warning when using a class
with a vtable
The code is getting the pointer, then constructing it on the next
line. Using reinterpret_cast on this pointer is legal according to
https://clang.llvm.org/docs/ControlFlowIntegrity.html#bad-cast-checking,
but it flags it anyway. The docs say it might be necessary for
`allocate()`-type APIs, and recommends adding them to an ignorelist.
Also note that std::addressof is removed. It is unnecessary since
inlined_data is a char-array.
PiperOrigin-RevId: 550972834
Change-Id: Ib224cec330bb6bcb770296de6c91881f404ef531
Diffstat (limited to 'absl/container/inlined_vector_test.cc')
-rw-r--r-- | absl/container/inlined_vector_test.cc | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/absl/container/inlined_vector_test.cc b/absl/container/inlined_vector_test.cc index 6f4625dc..07304518 100644 --- a/absl/container/inlined_vector_test.cc +++ b/absl/container/inlined_vector_test.cc @@ -1621,6 +1621,11 @@ TEST(DynamicVec, DynamicVecCompiles) { (void)v; } +TEST(DynamicVec, CreateNonEmptyDynamicVec) { + DynamicVec v(1); + EXPECT_EQ(v.size(), 1u); +} + TEST(AllocatorSupportTest, Constructors) { using MyAlloc = CountingAllocator<int>; using AllocVec = absl::InlinedVector<int, 4, MyAlloc>; |