[libcxx] Disable failing test for no-exceptions build
authorOliver Stannard <oliver.stannard@linaro.org>
Tue, 15 Sep 2020 10:40:05 +0000 (11:40 +0100)
committerOliver Stannard <oliver.stannard@linaro.org>
Tue, 15 Sep 2020 13:28:32 +0000 (14:28 +0100)
This test tries to create a 2 GiB std::string, catching the bad_alloc
exception if the allocation fails. However, for no-exceptions builds
there is no way for the error to be reported, so this crashes with a
null pointer dereference.

Differential revision: https://reviews.llvm.org/D87682

libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.put.area/pbump2gig.pass.cpp

index eee48f3..e34dbc9 100644 (file)
 //
 // REQUIRES: long_tests
 
+// Unsupported for no-exceptions builds because they have no way to report an
+// allocation failure when attempting to allocate the 2GiB string.
+// UNSUPPORTED: no-exceptions
+
 #include <sstream>
 #include <cassert>
 #include "test_macros.h"
@@ -28,18 +32,14 @@ struct SB : std::stringbuf
 
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_EXCEPTIONS
     try {
-#endif
         std::string str(2147483648, 'a');
         SB sb;
         sb.str(str);
         assert(sb.pubpbase() <= sb.pubpptr());
-#ifndef TEST_HAS_NO_EXCEPTIONS
     }
     catch (const std::length_error &) {} // maybe the string can't take 2GB
     catch (const std::bad_alloc    &) {} // maybe we don't have enough RAM
-#endif
 
   return 0;
 }