aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2018-07-25 21:23:07 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2018-07-25 21:23:07 +0100
commit17a6321210fe85bc369dae85b4c4b06d952dc041 (patch)
tree90ee618a314f5bdddeb397124eee5a490db14eda
parent0fc1c4290bbeb00a66621a1596db297bbed05dc2 (diff)
downloadgcc-17a6321210fe85bc369dae85b4c4b06d952dc041.zip
gcc-17a6321210fe85bc369dae85b4c4b06d952dc041.tar.gz
gcc-17a6321210fe85bc369dae85b4c4b06d952dc041.tar.bz2
PR libstdc++/86676 Do not assume stack buffer is aligned
PR libstdc++/86676 * testsuite/20_util/monotonic_buffer_resource/release.cc: Allow for buffer being misaligned and so returned pointer not being at start. From-SVN: r262980
-rw-r--r--libstdc++-v3/ChangeLog4
-rw-r--r--libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/release.cc6
2 files changed, 8 insertions, 2 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index d7a9dbb..1a0a485 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,5 +1,9 @@
2018-07-25 Jonathan Wakely <jwakely@redhat.com>
+ PR libstdc++/86676
+ * testsuite/20_util/monotonic_buffer_resource/release.cc: Allow for
+ buffer being misaligned and so returned pointer not being at start.
+
* include/experimental/memory_resource: Include <cstddef> header.
* acinclude.m4 (glibcxx_SUBDIRS): Add src/c++17.
diff --git a/libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/release.cc b/libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/release.cc
index 0c7f317..ac70385 100644
--- a/libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/release.cc
+++ b/libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/release.cc
@@ -115,10 +115,12 @@ test04()
unsigned char buffer[1024];
std::pmr::monotonic_buffer_resource mbr(buffer, sizeof(buffer), &r);
void* p = mbr.allocate(800, 16);
- VERIFY( p == buffer );
+ VERIFY( p >= buffer && p < (buffer + 16) );
+ void* const p_in_buffer = p;
VERIFY( r.allocate_calls == 0 );
p = mbr.allocate(300, 1);
VERIFY( p != buffer );
+ VERIFY( p != buffer );
VERIFY( r.allocate_calls == 1 );
mbr.release();
VERIFY( r.deallocate_calls == 1 );
@@ -126,7 +128,7 @@ test04()
VERIFY( r.number_of_active_allocations() == 0 );
// initial buffer should be used again now:
p = mbr.allocate(1000);
- VERIFY( p == buffer );
+ VERIFY( p == p_in_buffer );
VERIFY( r.allocate_calls == 1 );
}