[libcxx-commits] [libcxx] [libc++] Correct mask_array assignment (PR #219490)
Gergely Futo via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Sep 2 23:56:14 PDT 2026
https://github.com/futog updated https://github.com/llvm/llvm-project/pull/219490
>From e6a71a993fd61ac3410faf3c906e108ec0088b65 Mon Sep 17 00:00:00 2001
From: Gergely Futo <gergely.futo at hightec-rt.com>
Date: Fri, 28 Aug 2026 16:29:07 +0200
Subject: [PATCH] [libc++] Correct mask_array assignment
The index array from `__ma` should be used for indexing, instead of the
index array from `this`.
---
libcxx/include/__cxx03/valarray | 2 +-
libcxx/include/valarray | 2 +-
.../template.mask.array/mask.array.assign/mask_array.pass.cpp | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/libcxx/include/__cxx03/valarray b/libcxx/include/__cxx03/valarray
index 869bc306abb3a..7103f09a65ba9 100644
--- a/libcxx/include/__cxx03/valarray
+++ b/libcxx/include/__cxx03/valarray
@@ -1543,7 +1543,7 @@ template <class _Tp>
inline const mask_array<_Tp>& mask_array<_Tp>::operator=(const mask_array& __ma) const {
size_t __n = __1d_.size();
for (size_t __i = 0; __i < __n; ++__i)
- __vp_[__1d_[__i]] = __ma.__vp_[__1d_[__i]];
+ __vp_[__1d_[__i]] = __ma.__vp_[__ma.__1d_[__i]];
return *this;
}
diff --git a/libcxx/include/valarray b/libcxx/include/valarray
index d0997ebf2caae..0d80b997c1295 100644
--- a/libcxx/include/valarray
+++ b/libcxx/include/valarray
@@ -1614,7 +1614,7 @@ template <class _Tp>
inline const mask_array<_Tp>& mask_array<_Tp>::operator=(const mask_array& __ma) const {
size_t __n = __1d_.size();
for (size_t __i = 0; __i < __n; ++__i)
- __vp_[__1d_[__i]] = __ma.__vp_[__1d_[__i]];
+ __vp_[__1d_[__i]] = __ma.__vp_[__ma.__1d_[__i]];
return *this;
}
diff --git a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.assign/mask_array.pass.cpp b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.assign/mask_array.pass.cpp
index 500341aceed37..9009e0190669c 100644
--- a/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.assign/mask_array.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/template.mask.array/mask.array.assign/mask_array.pass.cpp
@@ -29,7 +29,7 @@ int main(int, char**)
bool b2[N2] = {true, false, true, true,
false, false, true, true};
std::valarray<int> v1(a1, N1);
- const std::valarray<int> v2(a2, N2);
+ std::valarray<int> v2(a2, N2);
std::valarray<bool> vb1(b1, N1);
std::valarray<bool> vb2(b2, N2);
v1[vb1] = v2[vb2];
More information about the libcxx-commits
mailing list