what-big.cc: New.
authorBenjamin Kosnik <bkoz@redhat.com>
Fri, 1 Jun 2007 17:03:22 +0000 (17:03 +0000)
committerBenjamin Kosnik <bkoz@gcc.gnu.org>
Fri, 1 Jun 2007 17:03:22 +0000 (17:03 +0000)
2007-06-01  Benjamin Kosnik  <bkoz@redhat.com>

* testsuite/19_diagnostics/logic_error/what-big.cc: New.
* testsuite/19_diagnostics/logic_error/what-3.cc: Same.
* testsuite/19_diagnostics/runtime_error/what-big.cc: Same.
* testsuite/19_diagnostics/runtime_error/what-3.cc: Same.

* testsuite/18_support/14493.cc: Break into...
* testsuite/18_support/exception/what.cc: ...this.
* testsuite/18_support/bad_cast/what.cc: ...this.
* testsuite/18_support/bad_alloc/what.cc: ...this.
* testsuite/18_support/bad_typeid/what.cc: ...this.
* testsuite/18_support/bad_exception/what.cc: ...this.

* testsuite/19_diagnostics/bad_exception/23591_thread-1.c: Move...
* testsuite/18_support/bad_exception/23591_thread-1.c: ...here.

* testsuite/18_support/14026.cc: Move...
* testsuite/18_support/uncaught_exception/14026.cc: ...here.

From-SVN: r125267

15 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/testsuite/18_support/14026.cc [deleted file]
libstdc++-v3/testsuite/18_support/14493.cc [deleted file]
libstdc++-v3/testsuite/18_support/bad_alloc/what.cc [new file with mode: 0644]
libstdc++-v3/testsuite/18_support/bad_cast/what.cc [new file with mode: 0644]
libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c [new file with mode: 0644]
libstdc++-v3/testsuite/18_support/bad_exception/what.cc [new file with mode: 0644]
libstdc++-v3/testsuite/18_support/bad_typeid/what.cc [new file with mode: 0644]
libstdc++-v3/testsuite/18_support/exception/what.cc [new file with mode: 0644]
libstdc++-v3/testsuite/18_support/uncaught_exception/14026.cc [new file with mode: 0644]
libstdc++-v3/testsuite/19_diagnostics/bad_exception/23591_thread-1.c [deleted file]
libstdc++-v3/testsuite/19_diagnostics/logic_error/what-3.cc [new file with mode: 0644]
libstdc++-v3/testsuite/19_diagnostics/logic_error/what-big.cc [new file with mode: 0644]
libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-3.cc
libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-big.cc [new file with mode: 0644]

index 463cbf6304cf9daf6f1164f5349bd88ff6aaad87..6507c5f63aafd4bcf76f3e70947580ecc5549b75 100644 (file)
@@ -1,3 +1,23 @@
+2007-06-01  Benjamin Kosnik  <bkoz@redhat.com>
+       
+       * testsuite/19_diagnostics/logic_error/what-big.cc: New.
+       * testsuite/19_diagnostics/logic_error/what-3.cc: Same.
+       * testsuite/19_diagnostics/runtime_error/what-big.cc: Same.
+       * testsuite/19_diagnostics/runtime_error/what-3.cc: Same.
+
+       * testsuite/18_support/14493.cc: Break into...
+       * testsuite/18_support/exception/what.cc: ...this.
+       * testsuite/18_support/bad_cast/what.cc: ...this.
+       * testsuite/18_support/bad_alloc/what.cc: ...this.
+       * testsuite/18_support/bad_typeid/what.cc: ...this.
+       * testsuite/18_support/bad_exception/what.cc: ...this.
+
+       * testsuite/19_diagnostics/bad_exception/23591_thread-1.c: Move...
+       * testsuite/18_support/bad_exception/23591_thread-1.c: ...here.
+
+       * testsuite/18_support/14026.cc: Move...
+       * testsuite/18_support/uncaught_exception/14026.cc: ...here.
+
 2007-06-01  Benjamin Kosnik  <bkoz@redhat.com>
 
        * include/ext/throw_allocator.h (__throw_allocator::allocate):
diff --git a/libstdc++-v3/testsuite/18_support/14026.cc b/libstdc++-v3/testsuite/18_support/14026.cc
deleted file mode 100644 (file)
index 103ac64..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-// PR 14026
-// 18.6.4 uncaught_exception
-
-#include <cstdlib>
-#include <exception>
-#include <testsuite_hooks.h>
-
-static void
-no_uncaught ()
-{
-  if (std::uncaught_exception ())
-    abort ();
-}
-
-int
-main ()
-{
-  try
-    {
-      throw 1;
-    }
-  catch (...)
-    {
-      try
-        {
-          throw;
-        }
-      catch (...)
-        {
-          no_uncaught ();
-        }
-    }
-  no_uncaught ();
-}
diff --git a/libstdc++-v3/testsuite/18_support/14493.cc b/libstdc++-v3/testsuite/18_support/14493.cc
deleted file mode 100644 (file)
index 188bad7..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-// 2007-01-30  Paolo Carlini  <pcarlini@suse.de>
-
-// Copyright (C) 2007 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-// USA.
-
-#include <new>
-#include <typeinfo>
-#include <exception>
-#include <cstring>
-#include <testsuite_hooks.h>
-
-// libstdc++/14493
-void test01() 
-{
-  bool test __attribute__((unused)) = true;
-  using namespace std;
-
-  bad_alloc ba;
-  VERIFY( !strcmp(ba.what(), "std::bad_alloc") );
-
-  bad_cast bc;
-  VERIFY( !strcmp(bc.what(), "std::bad_cast") );
-
-  bad_typeid bt;
-  VERIFY( !strcmp(bt.what(), "std::bad_typeid") );
-
-  exception e;
-  VERIFY( !strcmp(e.what(), "std::exception") );
-
-  bad_exception be;
-  VERIFY( !strcmp(be.what(), "std::bad_exception") );
-}
-
-int main()
-{
-  test01();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/18_support/bad_alloc/what.cc b/libstdc++-v3/testsuite/18_support/bad_alloc/what.cc
new file mode 100644 (file)
index 0000000..3beb3bd
--- /dev/null
@@ -0,0 +1,41 @@
+// 2007-01-30  Paolo Carlini  <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+#include <new>
+#include <typeinfo>
+#include <exception>
+#include <cstring>
+#include <testsuite_hooks.h>
+
+// libstdc++/14493
+void test01() 
+{
+  bool test __attribute__((unused)) = true;
+  using namespace std;
+
+  bad_alloc ba;
+  VERIFY( !strcmp(ba.what(), "std::bad_alloc") );
+}
+
+int main()
+{
+  test01();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/18_support/bad_cast/what.cc b/libstdc++-v3/testsuite/18_support/bad_cast/what.cc
new file mode 100644 (file)
index 0000000..e22495f
--- /dev/null
@@ -0,0 +1,41 @@
+// 2007-01-30  Paolo Carlini  <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+#include <new>
+#include <typeinfo>
+#include <exception>
+#include <cstring>
+#include <testsuite_hooks.h>
+
+// libstdc++/14493
+void test01() 
+{
+  bool test __attribute__((unused)) = true;
+  using namespace std;
+
+  bad_cast bc;
+  VERIFY( !strcmp(bc.what(), "std::bad_cast") );
+}
+
+int main()
+{
+  test01();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c b/libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c
new file mode 100644 (file)
index 0000000..8c953ea
--- /dev/null
@@ -0,0 +1,63 @@
+// { dg-require-sharedlib "" }
+// { dg-options "-g -O2 -pthread -ldl -x c" { target *-*-linux* } }
+
+// Copyright (C) 2005 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+#include <pthread.h>
+#include <dlfcn.h>
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+
+// NB: This must be compiled and linked as a "C" executable.
+static void* run(void* arg)
+{
+  typedef void (*function_type) (void);
+  void* lib;
+  void (*cb)();
+
+  lib = dlopen("./testsuite_shared.so", RTLD_NOW);
+  if (lib == NULL)
+    {
+      printf("dlopen failed: %s\n", strerror(errno));
+      return NULL;
+    }
+  cb = (function_type) dlsym(lib, "try_throw_exception");
+  if (cb == NULL)
+    {
+      printf("dlsym failed: %s\n", strerror(errno));
+      return NULL;
+    }
+  cb();
+  dlclose(lib);
+  return NULL;
+}
+
+// libstdc++/23591
+int main(void)
+{
+  pthread_t pt;
+
+  if (pthread_create(&pt, NULL, &run, NULL) != 0)
+    return 1;
+  if (pthread_join(pt, NULL) != 0)
+    return 1;
+
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/18_support/bad_exception/what.cc b/libstdc++-v3/testsuite/18_support/bad_exception/what.cc
new file mode 100644 (file)
index 0000000..a18bafe
--- /dev/null
@@ -0,0 +1,41 @@
+// 2007-01-30  Paolo Carlini  <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+#include <new>
+#include <typeinfo>
+#include <exception>
+#include <cstring>
+#include <testsuite_hooks.h>
+
+// libstdc++/14493
+void test01() 
+{
+  bool test __attribute__((unused)) = true;
+  using namespace std;
+
+  bad_exception be;
+  VERIFY( !strcmp(be.what(), "std::bad_exception") );
+}
+
+int main()
+{
+  test01();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/18_support/bad_typeid/what.cc b/libstdc++-v3/testsuite/18_support/bad_typeid/what.cc
new file mode 100644 (file)
index 0000000..4e8d9a8
--- /dev/null
@@ -0,0 +1,41 @@
+// 2007-01-30  Paolo Carlini  <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+#include <new>
+#include <typeinfo>
+#include <exception>
+#include <cstring>
+#include <testsuite_hooks.h>
+
+// libstdc++/14493
+void test01() 
+{
+  bool test __attribute__((unused)) = true;
+  using namespace std;
+
+  bad_typeid bt;
+  VERIFY( !strcmp(bt.what(), "std::bad_typeid") );
+}
+
+int main()
+{
+  test01();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/18_support/exception/what.cc b/libstdc++-v3/testsuite/18_support/exception/what.cc
new file mode 100644 (file)
index 0000000..d328bb7
--- /dev/null
@@ -0,0 +1,41 @@
+// 2007-01-30  Paolo Carlini  <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+#include <new>
+#include <typeinfo>
+#include <exception>
+#include <cstring>
+#include <testsuite_hooks.h>
+
+// libstdc++/14493
+void test01() 
+{
+  bool test __attribute__((unused)) = true;
+  using namespace std;
+
+  exception e;
+  VERIFY( !strcmp(e.what(), "std::exception") );
+}
+
+int main()
+{
+  test01();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/18_support/uncaught_exception/14026.cc b/libstdc++-v3/testsuite/18_support/uncaught_exception/14026.cc
new file mode 100644 (file)
index 0000000..d694890
--- /dev/null
@@ -0,0 +1,54 @@
+// Copyright (C) 2004, 2007 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// PR 14026
+// 18.6.4 uncaught_exception
+
+#include <cstdlib>
+#include <exception>
+#include <testsuite_hooks.h>
+
+static void
+no_uncaught ()
+{
+  if (std::uncaught_exception())
+    abort();
+}
+
+int
+main()
+{
+  try
+    {
+      throw 1;
+    }
+  catch (...)
+    {
+      try
+        {
+          throw;
+        }
+      catch (...)
+        {
+          no_uncaught ();
+        }
+    }
+  no_uncaught();
+
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/19_diagnostics/bad_exception/23591_thread-1.c b/libstdc++-v3/testsuite/19_diagnostics/bad_exception/23591_thread-1.c
deleted file mode 100644 (file)
index 8c953ea..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-// { dg-require-sharedlib "" }
-// { dg-options "-g -O2 -pthread -ldl -x c" { target *-*-linux* } }
-
-// Copyright (C) 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-// USA.
-
-#include <pthread.h>
-#include <dlfcn.h>
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-
-// NB: This must be compiled and linked as a "C" executable.
-static void* run(void* arg)
-{
-  typedef void (*function_type) (void);
-  void* lib;
-  void (*cb)();
-
-  lib = dlopen("./testsuite_shared.so", RTLD_NOW);
-  if (lib == NULL)
-    {
-      printf("dlopen failed: %s\n", strerror(errno));
-      return NULL;
-    }
-  cb = (function_type) dlsym(lib, "try_throw_exception");
-  if (cb == NULL)
-    {
-      printf("dlsym failed: %s\n", strerror(errno));
-      return NULL;
-    }
-  cb();
-  dlclose(lib);
-  return NULL;
-}
-
-// libstdc++/23591
-int main(void)
-{
-  pthread_t pt;
-
-  if (pthread_create(&pt, NULL, &run, NULL) != 0)
-    return 1;
-  if (pthread_join(pt, NULL) != 0)
-    return 1;
-
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/19_diagnostics/logic_error/what-3.cc b/libstdc++-v3/testsuite/19_diagnostics/logic_error/what-3.cc
new file mode 100644 (file)
index 0000000..4dbad0d
--- /dev/null
@@ -0,0 +1,69 @@
+// { dg-options "-std=gnu++0x" }
+
+// Copyright (C) 2007
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+#include <string>
+#include <stdexcept>
+#include <cstring>
+#include <testsuite_hooks.h>
+
+// test copy ctors, assignment operators, and persistence of member string data
+// libstdc++/1972
+// via Greg Bumgardner <bumgard@roguewave.com>
+void allocate_on_stack(void) 
+{
+  const size_t num = 512;
+  __extension__ char array[num];
+  for (size_t i = 0; i < num; i++) 
+    array[i]=0;
+}
+
+void test04()
+{
+  bool test __attribute__((unused)) = true;
+  const std::string s("CA ISO emergency once again:immediate power down");
+  const char* strlit1 = "wish I lived in Palo Alto";
+  const char* strlit2 = "...or Santa Barbara";
+  std::logic_error obj1(s);
+  
+  // block 01
+  {
+    const std::string s2(strlit1);
+    std::logic_error obj2(s2);
+    obj1 = obj2;
+  }
+  allocate_on_stack();
+  VERIFY( std::strcmp(strlit1, obj1.what()) == 0 ); 
+
+  // block 02
+  {
+    const std::string s3(strlit2);
+    std::logic_error obj3 = std::logic_error(s3);
+    obj1 = obj3;
+  }
+  allocate_on_stack();     
+  VERIFY( std::strcmp(strlit2, obj1.what()) == 0 ); 
+}
+
+int main(void)
+{
+  test04();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/19_diagnostics/logic_error/what-big.cc b/libstdc++-v3/testsuite/19_diagnostics/logic_error/what-big.cc
new file mode 100644 (file)
index 0000000..681e2a3
--- /dev/null
@@ -0,0 +1,41 @@
+// 2007-05-29 Benjamin Kosnik  <bkoz@redhat.com>
+
+// Copyright (C) 2007 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+#include <cstring>
+#include <string>
+#include <stdexcept>
+#include <testsuite_hooks.h>
+
+// Can construct and return 10k character error string.
+void test01()
+{
+  typedef std::logic_error test_type;
+
+  bool test __attribute__((unused)) = true;
+  const std::string xxx(10000, 'x');
+  test_type t(xxx);
+  VERIFY( std::strcmp(t.what(), xxx.c_str()) == 0 );
+}
+
+int main(void)
+{
+  test01();
+  return 0;
+}
index 04b85c0c5fe9db00f5601bbfe357af5a2036105e..63cb48163228c10c4618aa3f1ceba39fb22d56f2 100644 (file)
@@ -26,7 +26,7 @@
 #include <cstring>
 #include <testsuite_hooks.h>
 
-// test copy ctors and assignment operators
+// test copy ctors, assignment operators, and persistence of member string data
 // libstdc++/1972
 // via Greg Bumgardner <bumgard@roguewave.com>
 void allocate_on_stack(void) 
@@ -36,6 +36,7 @@ void allocate_on_stack(void)
   for (size_t i = 0; i < num; i++) 
     array[i]=0;
 }
+
 void test04()
 {
   bool test __attribute__((unused)) = true;
diff --git a/libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-big.cc b/libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-big.cc
new file mode 100644 (file)
index 0000000..c0ce964
--- /dev/null
@@ -0,0 +1,41 @@
+// 2007-05-29 Benjamin Kosnik  <bkoz@redhat.com>
+
+// Copyright (C) 2007 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+#include <cstring>
+#include <string>
+#include <stdexcept>
+#include <testsuite_hooks.h>
+
+// Can construct and return 10k character error string.
+void test01()
+{
+  typedef std::runtime_error test_type;
+
+  bool test __attribute__((unused)) = true;
+  const std::string xxx(10000, 'x');
+  test_type t(xxx);
+  VERIFY( std::strcmp(t.what(), xxx.c_str()) == 0 );
+}
+
+int main(void)
+{
+  test01();
+  return 0;
+}