[all-commits] [llvm/llvm-project] d0b516: [libc++] Fix an exception safety issue in `forward...
Konstantin Varlamov via All-commits
all-commits at lists.llvm.org
Wed Jul 12 10:11:50 PDT 2023
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: d0b51657c259365750b3aada3bae23f19c96fdbc
https://github.com/llvm/llvm-project/commit/d0b51657c259365750b3aada3bae23f19c96fdbc
Author: varconst <varconsteq at gmail.com>
Date: 2023-07-12 (Wed, 12 Jul 2023)
Changed paths:
M libcxx/include/__memory/allocation_guard.h
M libcxx/include/forward_list
A libcxx/test/libcxx/memory/allocation_guard.pass.cpp
M libcxx/test/std/containers/container.adaptors/from_range_container_adaptors.h
M libcxx/test/std/containers/container.adaptors/push_range_container_adaptors.h
A libcxx/test/std/containers/exception_safety_helpers.h
M libcxx/test/std/containers/from_range_helpers.h
A libcxx/test/std/containers/sequences/forwardlist/exception_safety.pass.cpp
M libcxx/test/std/containers/sequences/from_range_sequence_containers.h
M libcxx/test/std/containers/sequences/insert_range_sequence_containers.h
Log Message:
-----------
[libc++] Fix an exception safety issue in `forward_list` and add tests.
When inserting nodes into a forward list, each new node is allocated but
not constructed. The constructor was being called explicitly on the node
`value_` but the `next_` pointer remained uninitialized rather than
being set to null. This bug is only triggered in the cleanup code if an
exception is thrown -- upon successful creation of new nodes, the last
incorrect "next" value is overwritten to a correct pointer.
This issue was found due to new tests added in
https://reviews.llvm.org/D149830.
Differential Revision: https://reviews.llvm.org/D152327
More information about the All-commits
mailing list