[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