]> gcc.gnu.org Git - gcc.git/commitdiff
9661-1.cc: Avoid leaking the semaphores if a VERIFY fails.
authorPaolo Carlini <pcarlini@suse.de>
Fri, 19 May 2006 23:56:12 +0000 (23:56 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Fri, 19 May 2006 23:56:12 +0000 (23:56 +0000)
2006-05-19  Paolo Carlini  <pcarlini@suse.de>

* testsuite/27_io/objects/wchar_t/9661-1.cc: Avoid leaking the
semaphores if a VERIFY fails.
* testsuite/27_io/objects/wchar_t/7.cc: Likewise.
* testsuite/27_io/objects/char/9661-1.cc: Likewise.
* testsuite/27_io/objects/char/7.cc: Likewise.
* testsuite/27_io/basic_filebuf/seekoff/char/26777.cc: Likewise.
* testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc: Likewise.
* testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc: Likewise.
* testsuite/27_io/basic_filebuf/close/char/4879.cc: Likewise.
* testsuite/27_io/basic_filebuf/close/char/9964.cc: Likewise.
* testsuite/27_io/basic_filebuf/underflow/char/10097.cc: Likewise.

From-SVN: r113916

libstdc++-v3/ChangeLog
libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/4879.cc
libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/9964.cc
libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc
libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc
libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/26777.cc
libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/10097.cc
libstdc++-v3/testsuite/27_io/objects/char/7.cc
libstdc++-v3/testsuite/27_io/objects/char/9661-1.cc
libstdc++-v3/testsuite/27_io/objects/wchar_t/7.cc
libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-1.cc

index eeea743d59e26ef14060177e36a3f11e53f194bc..dc26e705130ce5e3ad6ccf49fd22d3b1e346502d 100644 (file)
@@ -1,3 +1,17 @@
+2006-05-19  Paolo Carlini  <pcarlini@suse.de>
+
+       * testsuite/27_io/objects/wchar_t/9661-1.cc: Avoid leaking the
+       semaphores if a VERIFY fails.
+       * testsuite/27_io/objects/wchar_t/7.cc: Likewise.
+       * testsuite/27_io/objects/char/9661-1.cc: Likewise.
+       * testsuite/27_io/objects/char/7.cc: Likewise.
+       * testsuite/27_io/basic_filebuf/seekoff/char/26777.cc: Likewise.
+       * testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc: Likewise.
+       * testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc: Likewise.
+       * testsuite/27_io/basic_filebuf/close/char/4879.cc: Likewise.
+       * testsuite/27_io/basic_filebuf/close/char/9964.cc: Likewise.
+       * testsuite/27_io/basic_filebuf/underflow/char/10097.cc: Likewise.
+
 2006-05-17  Paolo Carlini  <pcarlini@suse.de>
 
        * include/tr1/hashtable (hashtable<>::m_find): Remove; update callers.
index cfbfc44adce621e5b7ed1bb5e4cab977660f7ba6..e976c370f8d40a086e8ccf4618bccd6819aa3940 100644 (file)
@@ -1,7 +1,8 @@
 // { dg-require-fork "" }
 // { dg-require-mkfifo "" }
  
-// Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
+// 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
 #include <fcntl.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+
+// No asserts, avoid leaking the semaphores if a VERIFY fails.
+#undef _GLIBCXX_ASSERT
+
 #include <testsuite_hooks.h>
 
 // libstdc++/2913, libstdc++/4879
 // John Fardo  <jfardo@laurelnetworks.com>, Brad Garcia <garsh@attbi.com>
-void
+bool
 test_04()
 {
   using namespace __gnu_test;
@@ -60,20 +65,20 @@ test_04()
     {
       std::cerr << "failed to fork" << std::endl;
       unlink(name);
-      exit(-1);
+      return false;
     }
   else if (fval == 0)
     {
       std::ifstream ifs(name);
-      s1.wait ();
+      s1.wait();
       ifs.close();
-      s2.signal ();
+      s2.signal();
       exit(0);
     }
 
   std::ofstream ofs(name);
-  s1.signal ();
-  s2.wait ();
+  s1.signal();
+  s2.wait();
   ofs.put('t');
 
   /*
@@ -89,18 +94,15 @@ test_04()
     {
       test = false;
       VERIFY( test );
-      unlink(name);
-      exit(-1);
     }
 
   unlink(name);
+
+  return test;
 }
 
 int
 main()
 {
-  test_04();
-  return 0;
+  return !test_04();
 }
-
-
index 21d7ae66aac17faeba94fdcc177c588fb7127ffe..1b9c3ff90ecbf392fc340e91ebcea7ddfdc297ac 100644 (file)
@@ -1,7 +1,8 @@
 // { dg-require-fork "" }
 // { dg-require-mkfifo "" }
 
-// Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
+// 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
 #include <fcntl.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+
+// No asserts, avoid leaking the semaphores if a VERIFY fails.
+#undef _GLIBCXX_ASSERT
+
 #include <testsuite_hooks.h>
 
 // libstdc++/9964
-void test_07()
+bool test_07()
 {
   using namespace std;
   using namespace __gnu_test;
@@ -56,9 +61,9 @@ void test_07()
     {
       filebuf fbin;
       fbin.open(name, ios_base::in);
-      s1.wait ();
+      s1.wait();
       fbin.close();
-      s2.signal ();
+      s2.signal();
       exit(0);
     }
   
@@ -66,18 +71,19 @@ void test_07()
   filebuf* ret = fb.open(name, ios_base::in | ios_base::out);
   VERIFY( ret != NULL );
   VERIFY( fb.is_open() );
-  s1.signal ();
-  s2.wait ();
+  s1.signal();
+  s2.wait();
   fb.sputc('a');
 
   ret = fb.close();
   VERIFY( ret != NULL );
   VERIFY( !fb.is_open() );
+
+  return test;
 }
 
 int
 main()
 {
-  test_07();
-  return 0;
+  return !test_07();
 }
index 53998859a8c88fd2a5362e79358faa831f733466..f1649580fec87b3de6a767234fa6b2e8515134b8 100644 (file)
@@ -2,7 +2,7 @@
 // { dg-require-fork "" }
 // { dg-require-mkfifo "" }
 
-// Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+// Copyright (C) 2003, 2004, 2005, 2006 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
 #include <sys/types.h>
 #include <sys/stat.h>
 
+// No asserts, avoid leaking the semaphores if a VERIFY fails.
+#undef _GLIBCXX_ASSERT
+
 #include <testsuite_hooks.h>
 
 // libstdc++/13171
-void test01()
+bool test01()
 {
   bool test __attribute__((unused)) = true;
   using namespace std;
@@ -52,8 +55,8 @@ void test01()
       fb.open(name, ios_base::out);
       fb.sputc('S');
       fb.pubsync();
-      s1.signal ();
-      s2.wait ();
+      s1.signal();
+      s2.wait();
       fb.close();
       exit(0);
     }
@@ -61,17 +64,18 @@ void test01()
   filebuf fb;
   fb.pubimbue(loc_fr);
   fb.open(name, ios_base::in);
-  s1.wait ();
+  s1.wait();
   VERIFY( fb.is_open() );
   fb.pubimbue(loc_en);
   filebuf::int_type c = fb.sgetc();
   fb.close();
   VERIFY( c == 'S' );
-  s2.signal ();
+  s2.signal();
+
+  return test;
 }
 
 int main()
 {
-  test01();
-  return 0;
+  return !test01();
 }
index 586cdfe5d1f35c136c555ac7b4251100dce35d6d..14cfde77fbd51fd7549de5f1065065ccb492683c 100644 (file)
@@ -4,7 +4,7 @@
 
 // 2004-04-16  Petur Runolfsson  <peturr02@ru.is>
 
-// Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+// Copyright (C) 2004, 2005, 2006 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
 #include <fcntl.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+
+// No asserts, avoid leaking the semaphore if a VERIFY fails.
+#undef _GLIBCXX_ASSERT
+
 #include <testsuite_hooks.h>
 
 // libstdc++/14975
-void test01()
+bool test01()
 {
   using namespace std;
   using namespace __gnu_test;
@@ -57,7 +61,7 @@ void test01()
        filebuf fbin;
        fbin.open(name, ios_base::in);
       }
-      s1.signal ();
+      s1.signal();
       exit(0);
     }
   
@@ -67,7 +71,7 @@ void test01()
   VERIFY( ret != NULL );
   VERIFY( fb.is_open() );
 
-  s1.wait ();
+  s1.wait();
 
   try
     {
@@ -80,10 +84,11 @@ void test01()
   catch (std::exception&)
     {
     }
+
+  return test;
 }
 
 int main()
 {
-  test01();
-  return 0;
+  return !test01();
 }
index 7312ce2639f595e2b66364b58f024f584bfdc2b6..9cc973315a560409853d7a22fd5d4c58c4966a85 100644 (file)
@@ -21,6 +21,9 @@
 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
 // USA.
 
+// No asserts, avoid leaking the semaphores if a VERIFY fails.
+#undef _GLIBCXX_ASSERT
+
 #include <testsuite_hooks.h>
 #include <fstream>
 #include <sstream>
@@ -31,7 +34,7 @@
 #include <sys/stat.h>
 
 // libstdc++/26777
-void test01()
+bool test01()
 {
   using namespace std;
   using namespace __gnu_test;
@@ -77,10 +80,11 @@ void test01()
   fbin.close();
 
   VERIFY( oss.str() == "Whatever" );
+
+  return test;
 }
 
 int main()
 {
-  test01();
-  return 0;
+  return !test01();
 }
index 345a6642556c1c4c449da0135f9427ea44659e50..ffc36a3fc0791b753ee156f4e07d033e41920dc8 100644 (file)
 #include <fcntl.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+
+// No asserts, avoid leaking the semaphores if a VERIFY fails.
+#undef _GLIBCXX_ASSERT
+
 #include <testsuite_hooks.h>
 
 class UnderBuf : public std::filebuf
@@ -46,7 +50,7 @@ public:
 
 // libstdc++/10097
 // filebuf::underflow drops characters.
-void test16()
+bool test16()
 {
   using namespace std;
   using namespace __gnu_test;
@@ -84,7 +88,7 @@ void test16()
 
   UnderBuf fb;
   fb.open(name, ios_base::in);
-  
+
   fb.sgetc();
   streamsize n = fb.pub_showmanyc();
 
@@ -101,10 +105,11 @@ void test16()
   fb.close();
   s1.signal();
   s2.wait();
+
+  return test;
 }
 
 int main() 
 {
-  test16();
-  return 0;
+  return !test16();
 }
index 646ac6664013af7e0ed464fdcccc8002e15ebf84..a90fa03a5b5cf5035cae92cc763a13432f08a2da 100644 (file)
@@ -3,7 +3,7 @@
 
 // 2003-04-26 Petur Runolfsson  <peturr02@ru.is>
 
-// Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+// Copyright (C) 2003, 2004, 2005, 2006 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
 #include <fcntl.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+
+// No asserts, avoid leaking the semaphore if a VERIFY fails.
+#undef _GLIBCXX_ASSERT
+
 #include <testsuite_hooks.h>
 
 // Check that cout.flush() is called when last ios_base::Init is destroyed.
-void test07()
+bool test07()
 {
   using namespace std;
   using namespace __gnu_test;
@@ -54,8 +58,8 @@ void test07()
     {
       filebuf fbout;
       fbout.open(name, ios_base::in|ios_base::out);
-      s1.wait ();
-      VERIFY ( fbout.is_open() );
+      VERIFY( fbout.is_open() );
+      s1.wait();
       cout.rdbuf(&fbout);
       fbout.sputc('a');
       // NB: fbout is *not* destroyed here!
@@ -64,17 +68,18 @@ void test07()
   
   filebuf fbin;
   fbin.open(name, ios_base::in);
-  s1.signal ();
+  s1.signal();
   filebuf::int_type c = fbin.sbumpc();
   VERIFY( c != filebuf::traits_type::eof() );
   VERIFY( c == filebuf::traits_type::to_int_type('a') );
 
   fbin.close();
+
+  return test;
 }
 
 int
 main()
 {
-  test07();
-  return 0;
+  return !test07();
 }
index 6497f62a03a4061c1fa0152d7fcb81bce7f622a6..4723282650361a73b07fa1a4e438b0791ecdd5e8 100644 (file)
@@ -21,6 +21,9 @@
 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
 // USA.
 
+// No asserts, avoid leaking the semaphores if a VERIFY fails.
+#undef _GLIBCXX_ASSERT
+
 #include <testsuite_hooks.h>
 #include <cstdio>
 #include <iostream>
@@ -33,7 +36,7 @@
 // Check that cin.rdbuf()->sputbackc() puts characters back to stdin.
 // If cin.rdbuf() is a filebuf, this succeeds when stdin is a regular
 // file, but fails otherwise, hence the named fifo.
-void test01()
+bool test01()
 {
   using namespace std;
   using namespace __gnu_test;
@@ -54,7 +57,7 @@ void test01()
   if (child == 0)
     {
       FILE* file = fopen(name, "r+");
-      VERIFY (file != NULL);
+      VERIFY( file != NULL );
       fputs("Whatever\n", file);
       fflush(file);
       s1.signal();
@@ -85,10 +88,11 @@ void test01()
   VERIFY( c5 == c4 );
   s2.signal();
   s1.wait();
+
+  return test;
 }
 
 int main()
 {
-  test01();
-  return 0;
+  return !test01();
 }
index f1078cb7fa756aab5ef6d2e11fd08752a6314049..1e962d7eda467bfbdd9416f43b64dc9663c00092 100644 (file)
@@ -3,7 +3,7 @@
 
 // 2003-05-01 Petur Runolfsson  <peturr02@ru.is>
 
-// Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+// Copyright (C) 2003, 2004, 2005, 2006 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
 #include <fcntl.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+
+// No asserts, avoid leaking the semaphore if a VERIFY fails.
+#undef _GLIBCXX_ASSERT
+
 #include <testsuite_hooks.h>
 
 // Check that wcout.flush() is called when last ios_base::Init is destroyed.
-void test07()
+bool test07()
 {
   using namespace std;
   using namespace __gnu_test;
@@ -46,7 +50,7 @@ void test07()
   unlink(name);  
   mkfifo(name, S_IRWXU);
   semaphore s1;
-  
+
   int child = fork();
   VERIFY( child != -1 );
 
@@ -63,17 +67,18 @@ void test07()
   
   wfilebuf fbin;
   fbin.open(name, ios_base::in);
-  s1.signal ();
+  s1.signal();
   wfilebuf::int_type c = fbin.sbumpc();
   VERIFY( c != wfilebuf::traits_type::eof() );
   VERIFY( c == wfilebuf::traits_type::to_int_type(L'a') );
 
   fbin.close();
+
+  return test;
 }
 
 int
 main()
 {
-  test07();
-  return 0;
+  return !test07();
 }
index 5b3c231e2e5f1179d3c3cd8de67169ad1e2ae6ff..beee4046a216f5fc9dc1d3f3be5f4cf12d091761 100644 (file)
@@ -21,6 +21,9 @@
 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
 // USA.
 
+// No asserts, avoid leaking the semaphores if a VERIFY fails.
+#undef _GLIBCXX_ASSERT
+
 #include <testsuite_hooks.h>
 #include <cstdio>
 #include <iostream>
@@ -33,7 +36,7 @@
 // Check that wcin.rdbuf()->sputbackc() puts characters back to stdin.
 // If wcin.rdbuf() is a filebuf, this succeeds when stdin is a regular
 // file, but fails otherwise, hence the named fifo.
-void test01()
+bool test01()
 {
   using namespace std;
   using namespace __gnu_test;
@@ -83,11 +86,12 @@ void test01()
   VERIFY( c5 != WEOF );
   VERIFY( c5 == c4 );
   s2.signal();
-  s1.wait(); 
+  s1.wait();
+
+  return test;
 }
 
 int main()
 {
-  test01();
-  return 0;
+  return !test01();
 }
This page took 0.087562 seconds and 5 git commands to generate.