https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117121
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Target Milestone|--- |15.0
Last reconfirmed| |2024-10-13
Assignee|unassigned at gcc dot gnu.org |redi at gcc dot gnu.org
Status|UNCONFIRMED |ASSIGNED
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
I've just fixed this locally.
index 40c628b3818..3c8d46198c5 100644
--- a/libstdc++-v3/include/bits/ranges_algobase.h
+++ b/libstdc++-v3/include/bits/ranges_algobase.h
@@ -418,12 +418,13 @@ namespace ranges
{
using _ValueTypeI = iter_value_t<_Iter>;
auto __num = __last - __first;
+ __result -= __num;
if (__num > 1) [[likely]]
- __builtin_memmove(__result - __num, __first,
+ __builtin_memmove(__result, __first,
sizeof(_ValueTypeI) * __num);
else if (__num == 1)
ranges::__assign_one<_IsMove>(__first, __result);
- return {__first + __num, __result - __num};
+ return {__first + __num, __result};
}
}