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};
                }
            }

Reply via email to