[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