[libcxx] r193772 - Fixes PR17148

Marshall Clow mclow.lists at gmail.com
Thu Oct 31 10:23:08 PDT 2013


Author: marshall
Date: Thu Oct 31 12:23:08 2013
New Revision: 193772

URL: http://llvm.org/viewvc/llvm-project?rev=193772&view=rev
Log:
Fixes PR17148

Modified:
    libcxx/trunk/include/string
    libcxx/trunk/test/strings/basic.string/string.capacity/max_size.pass.cpp

Modified: libcxx/trunk/include/string
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/string?rev=193772&r1=193771&r2=193772&view=diff
==============================================================================
--- libcxx/trunk/include/string (original)
+++ libcxx/trunk/include/string Thu Oct 31 12:23:08 2013
@@ -3047,9 +3047,9 @@ basic_string<_CharT, _Traits, _Allocator
 {
     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
 }
 

Modified: libcxx/trunk/test/strings/basic.string/string.capacity/max_size.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/strings/basic.string/string.capacity/max_size.pass.cpp?rev=193772&r1=193771&r2=193772&view=diff
==============================================================================
--- libcxx/trunk/test/strings/basic.string/string.capacity/max_size.pass.cpp (original)
+++ libcxx/trunk/test/strings/basic.string/string.capacity/max_size.pass.cpp Thu Oct 31 12:23:08 2013
@@ -21,6 +21,12 @@ void
 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()





More information about the cfe-commits mailing list