[libcxx-commits] [libcxx] [libc++][ranges][abi-break] Fix `movable_box` overwriting memory of data that lives in the tail padding (PR #71314)
    via libcxx-commits 
    libcxx-commits at lists.llvm.org
       
    Fri Dec 22 12:59:07 PST 2023
    
    
  
================
@@ -54,7 +54,8 @@ namespace ranges {
 
 template <forward_range _View, indirect_binary_predicate<iterator_t<_View>, iterator_t<_View>> _Pred>
   requires view<_View> && is_object_v<_Pred>
-class chunk_by_view : public view_interface<chunk_by_view<_View, _Pred>> {
+class _LIBCPP_ABI_2023_OVERLAPPING_SUBOBJECT_FIX_TAG chunk_by_view
+    : public view_interface<chunk_by_view<_View, _Pred>> {
   _LIBCPP_NO_UNIQUE_ADDRESS _View __base_ = _View();
   _LIBCPP_NO_UNIQUE_ADDRESS __movable_box<_Pred> __pred_;
 
----------------
huixie90 wrote:
Have tried but it doe not work as expected. This is because `__non_propagating_cache` has a member `optional`, which is not marked as `no_unique_address`.
https://github.com/llvm/llvm-project/pull/71314
    
    
More information about the libcxx-commits
mailing list