[all-commits] [llvm/llvm-project] 120b0b: [libc++][ranges][abi-break] Fix `movable_box` over...
Hui via All-commits
all-commits at lists.llvm.org
Mon Jan 1 23:03:19 PST 2024
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 120b0bfbf0bade430fa9b19d78025ccd1d6148d0
https://github.com/llvm/llvm-project/commit/120b0bfbf0bade430fa9b19d78025ccd1d6148d0
Author: Hui <hui.xie0621 at gmail.com>
Date: 2024-01-02 (Tue, 02 Jan 2024)
Changed paths:
M libcxx/docs/ReleaseNotes/18.rst
M libcxx/include/__config
M libcxx/include/__ranges/chunk_by_view.h
M libcxx/include/__ranges/drop_while_view.h
M libcxx/include/__ranges/filter_view.h
M libcxx/include/__ranges/movable_box.h
M libcxx/include/__ranges/repeat_view.h
M libcxx/include/__ranges/single_view.h
M libcxx/include/__ranges/take_while_view.h
M libcxx/include/__ranges/transform_view.h
A libcxx/test/libcxx/ranges/range.adaptors/range.chunk.by/no_unique_address.compile.pass.cpp
A libcxx/test/libcxx/ranges/range.adaptors/range.move.wrap/empty_object.pass.cpp
M libcxx/test/libcxx/ranges/range.adaptors/range.move.wrap/no_unique_address.pass.cpp
A libcxx/test/libcxx/ranges/range.factories/range.repeat.view/no_unique_address.compile.pass.cpp
A libcxx/test/libcxx/ranges/range.factories/range.single.view/no_unique_address.compile.pass.cpp
M libcxx/test/std/ranges/range.adaptors/range.lazy.split/ctor.range.pass.cpp
M libcxx/test/std/ranges/range.adaptors/range.transform/general.pass.cpp
A libcxx/test/std/ranges/ranges_robust_against_no_unique_address.pass.cpp
Log Message:
-----------
[libc++][ranges][abi-break] Fix `movable_box` overwriting memory of data that lives in the tail padding (#71314)
fixes #70506
The detailed problem description is in #70506
The original proposed fix was to remove `[[no_unique_address]]` except
when `_Tp` is empty.
Edit:
After the discussion in the comments below, the new fix here is to
remove the `[[no_unique_address]]` from `movable_box` in the cases where
we need to add our own assignment operator, which has contains the
problematic `construct_at`
More information about the All-commits
mailing list