PR libstdc++/86676 Do not assume stack buffer is aligned
authorJonathan Wakely <jwakely@redhat.com>
Wed, 25 Jul 2018 20:23:07 +0000 (21:23 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Wed, 25 Jul 2018 20:23:07 +0000 (21:23 +0100)
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

libstdc++-v3/ChangeLog
libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/release.cc

index d7a9dbb6ce3a1a70887b099965b7174ba09d947a..1a0a485bd2cad489ee116e5460b1f51580924f9f 100644 (file)
@@ -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.
index 0c7f31789e62e90a5345ed52035fa77adec2fe4f..ac70385961dfd847b7843febce3f70eb8c5d6249 100644 (file)
@@ -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 );
 }