From 2744c2e2957221c8e9379e2232790c3e56efd90d Mon Sep 17 00:00:00 2001 From: Oliver Stannard Date: Tue, 15 Sep 2020 11:40:05 +0100 Subject: [PATCH] [libcxx] Disable failing test for no-exceptions build 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 --- .../streambuf.protected/streambuf.put.area/pbump2gig.pass.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.put.area/pbump2gig.pass.cpp b/libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.put.area/pbump2gig.pass.cpp index eee48f3..e34dbc9 100644 --- a/libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.put.area/pbump2gig.pass.cpp +++ b/libcxx/test/std/input.output/stream.buffers/streambuf/streambuf.protected/streambuf.put.area/pbump2gig.pass.cpp @@ -15,6 +15,10 @@ // // 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 #include #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; } -- 2.7.4