libstdc++: Fix incorrect size calculation in PMR resource (PR 94906)
authorJonathan Wakely <jwakely@redhat.com>
Mon, 4 May 2020 20:13:28 +0000 (21:13 +0100)
committerJonathan Wakely <jwakely@redhat.com>
Mon, 4 May 2020 21:47:30 +0000 (22:47 +0100)
commitbb27781b64162e1769df15e0c97e8d2145d2d10d
tree2c34c125e8275c26ac0ab02ca7b42ab2ad7bbd35
parentcc7e4de998cd2a31eb7c834fd427e7f16a99d60a
libstdc++: Fix incorrect size calculation in PMR resource  (PR 94906)

Calculating the size of a chunk being returned to the upstream allocator
was done with a 32-bit type, so it wrapped if the chunk was 4GB or
larger.

I don't know how to test this without allocating 4GB, so there's no test
in the testsuite. It has been tested manually with allocations sizes and
alignments exceeding 4GB.

PR libstdc++/94906
* src/c++17/memory_resource.cc
(monotonic_buffer_resource::_Chunk::release): Use size_t for shift
operands.
libstdc++-v3/ChangeLog
libstdc++-v3/src/c++17/memory_resource.cc