commit | 09f8550e1c3b9dbff558724eb5b301f7cccb261b | [log] [tgz] |
---|---|---|
author | Marshall Clow <mclow.lists@gmail.com> | Thu Oct 31 17:23:08 2013 +0000 |
committer | Marshall Clow <mclow.lists@gmail.com> | Thu Oct 31 17:23:08 2013 +0000 |
tree | 87184d92312708a3ecb2ef5d3a1dc15b487402b6 | |
parent | 4259337da29620acb1a5cd1615e1014912c2d79d [diff] |
Fixes PR17148 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@193772 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/string b/include/string index c98e22f..234eb6b 100644 --- a/include/string +++ b/include/string
@@ -3047,9 +3047,9 @@ { size_type __m = __alloc_traits::max_size(__alloc()); #if _LIBCPP_BIG_ENDIAN - return (__m <= ~__long_mask ? __m : __m/2) - 1; + return (__m <= ~__long_mask ? __m : __m/2) - __alignment; #else - return __m - 1; + return __m - __alignment; #endif }
diff --git a/test/strings/basic.string/string.capacity/max_size.pass.cpp b/test/strings/basic.string/string.capacity/max_size.pass.cpp index e016bba..f9b2284 100644 --- a/test/strings/basic.string/string.capacity/max_size.pass.cpp +++ b/test/strings/basic.string/string.capacity/max_size.pass.cpp
@@ -21,6 +21,12 @@ test(const S& s) { assert(s.max_size() >= s.size()); + { + S s2; + try { s2.resize(s2.max_size() - 1, 'x'); } + catch ( const std::bad_alloc & ) { return ; } + assert ( false ); + } } int main()