diff mbox

[v3] PR libstdc++/68276

Message ID CAFk2RUYwcJMSnaP+yhNJ0EU7YBA3OS8tEXoqiTzct0Lo7heWow@mail.gmail.com
State New
Headers show

Commit Message

Ville Voutilainen Dec. 16, 2015, 10:12 p.m. UTC
Tested on Linux-PPC64.

2015-12-17  Ville Voutilainen  <ville.voutilainen@gmail.com>

    PR libstdc++/68276

    * src/c++11/ios.cc (_M_grow_words): Use nothrow new.
    * testsuite/27_io/ios_base/storage/11584.cc: Adjust.
diff mbox

Patch

diff --git a/libstdc++-v3/src/c++11/ios.cc b/libstdc++-v3/src/c++11/ios.cc
index 4adc701..4241bef 100644
--- a/libstdc++-v3/src/c++11/ios.cc
+++ b/libstdc++-v3/src/c++11/ios.cc
@@ -121,9 +121,8 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	if (__ix < numeric_limits<int>::max())
 	  {
 	    __newsize = __ix + 1;
-	    __try
-	      { __words = new _Words[__newsize]; }
-	    __catch(const std::bad_alloc&)
+            __words = new (std::nothrow) _Words[__newsize];
+            if (!__words)
 	      {
 		_M_streambuf_state |= badbit;
 		if (_M_streambuf_state & _M_exception)
diff --git a/libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc b/libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc
index 0c80795..ae680c7 100644
--- a/libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc
+++ b/libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc
@@ -26,14 +26,14 @@ 
 
 int new_fails;
 
-void* operator new(std::size_t n) throw (std::bad_alloc)
+void* operator new(std::size_t n, const std::nothrow_t&) throw()
 {
   if (new_fails)
-    throw std::bad_alloc();  
+    return 0;
   return malloc(n);
 }
-void* operator new[] (std::size_t n) throw (std::bad_alloc)
-{ return operator new(n); }
+void* operator new[] (std::size_t n, const std::nothrow_t& ntt) throw()
+{ return operator new(n, ntt); }
 
 void operator delete (void *p) throw() { free(p); }
 void operator delete[] (void *p) throw() { operator delete(p); }