[committed] libstdc++: Fix regression in std::move algorithm (PR 93872)
Jonathan Wakely
jwakely@redhat.com
Tue Feb 25 12:44:00 GMT 2020
On 25/02/20 12:40 +0000, Jonathan Wakely wrote:
>The std::move and std::move_backward algorithms dispatch to the
>std::__memmove helper when appropriate. That function uses a
>pointer-to-const for the source values, preventing them from being
>moved. The two callers of that function have the same problem.
>
>Rather than altering __memmove and its callers to work with const or
>non-const source pointers, this takes a more conservative approach of
>casting away the const at the point where we want to do a move
>assignment. This relies on the fact that we only use __memmove when the
>type is trivially copyable, so we know the move assignment doesn't alter
>the source anyway.
>
> PR libstdc++/93872
> * include/bits/stl_algobase.h (__memmove): Cast away const before
> doing move assignment.
> * testsuite/25_algorithms/move/93872.cc: New test.
> * testsuite/25_algorithms/move_backward/93872.cc: New test.
>
Oops, I forgot to 'git add' one of the new tests.
Tested x86_64-linux, committed to master.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: patch.txt
Type: text/x-patch
Size: 1735 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20200225/93c410f7/attachment.bin>
More information about the Gcc-patches
mailing list