]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
10097.cc: Fix race condition.
authorHoward Hinnant <hhinnant@apple.com>
Sun, 12 Mar 2006 10:34:36 +0000 (10:34 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Sun, 12 Mar 2006 10:34:36 +0000 (10:34 +0000)
2006-03-12  Howard Hinnant  <hhinnant@apple.com>

* testsuite/27_io/basic_filebuf/underflow/char/10097.cc:
Fix race condition.
* testsuite/27_io/objects/char/9661-1.cc: Likewise.
* testsuite/27_io/objects/wchar_t/9661-1.cc: Likewise.

From-SVN: r111978

libstdc++-v3/ChangeLog
libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/10097.cc
libstdc++-v3/testsuite/27_io/objects/char/9661-1.cc
libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-1.cc

index 218b2257b644badb51598686762d1607f90e1088..d29909ad00fd23c929ac2532d94ef940e364eb55 100644 (file)
@@ -1,3 +1,10 @@
+2006-03-12  Howard Hinnant  <hhinnant@apple.com>
+
+       * testsuite/27_io/basic_filebuf/underflow/char/10097.cc:
+       Fix race condition.
+       * testsuite/27_io/objects/char/9661-1.cc: Likewise.
+       * testsuite/27_io/objects/wchar_t/9661-1.cc: Likewise.
+
 2006-03-10  Paolo Carlini  <pcarlini@suse.de>
 
        * include/tr1/cmath: Add atan2 and pow bits; add using declarations.    
index 33c72306990c0df754e71d1724185e48df66d91e..345a6642556c1c4c449da0135f9427ea44659e50 100644 (file)
@@ -3,7 +3,8 @@
 
 // 2001-05-21 Benjamin Kosnik  <bkoz@redhat.com>
 
-// 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
@@ -61,7 +62,7 @@ void test16()
       VERIFY( false );
     }
   
-  semaphore s1;
+  semaphore s1, s2;
   int fval = fork();
   if (fval == -1)
     {
@@ -72,11 +73,12 @@ void test16()
     {
       filebuf fbout;
       fbout.open(name, ios_base::in|ios_base::out);
-      VERIFY ( fbout.is_open() );
+      VERIFY( fbout.is_open() );
       fbout.sputn("0123456789", 10);
       fbout.pubsync();
-      s1.wait ();
+      s1.wait();
       fbout.close();
+      s2.signal();
       exit(0);
     }
 
@@ -97,7 +99,8 @@ void test16()
     }
 
   fb.close();
-  s1.signal ();
+  s1.signal();
+  s2.wait();
 }
 
 int main() 
index b6b8b3b478c8547042a35bceb68dc68ee901aa6b..6497f62a03a4061c1fa0152d7fcb81bce7f622a6 100644 (file)
@@ -3,7 +3,7 @@
 
 // 2003-04-30  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
@@ -57,14 +57,15 @@ void test01()
       VERIFY (file != NULL);
       fputs("Whatever\n", file);
       fflush(file);
-      s1.signal ();
-      s2.wait ();
+      s1.signal();
+      s2.wait();
       fclose(file);
+      s1.signal();
       exit(0);
     }
-  
+
   freopen(name, "r", stdin);
-  s1.wait ();
+  s1.wait();
 
   int c1 = fgetc(stdin);
   VERIFY( c1 != EOF );
@@ -82,7 +83,8 @@ void test01()
   int c5 = cin.rdbuf()->sgetc();
   VERIFY( c5 != EOF );
   VERIFY( c5 == c4 );
-  s2.signal ();
+  s2.signal();
+  s1.wait();
 }
 
 int main()
index 130af0164be209a194722acc71ab3d7a5579c66c..5b3c231e2e5f1179d3c3cd8de67169ad1e2ae6ff 100644 (file)
@@ -3,7 +3,7 @@
 
 // 2003-04-30  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
@@ -56,14 +56,15 @@ void test01()
       FILE* file = fopen(name, "w");
       fputs("Whatever\n", file);
       fflush(file);
-      s1.signal ();
-      s2.wait ();
+      s1.signal();
+      s2.wait();
       fclose(file);
+      s1.signal();
       exit(0);
     }
-  
+
   freopen(name, "r", stdin);
-  s1.wait ();
+  s1.wait();
 
   wint_t c1 = fgetwc(stdin);
   VERIFY( c1 != WEOF );
@@ -81,7 +82,8 @@ void test01()
   wint_t c5 = wcin.rdbuf()->sgetc();
   VERIFY( c5 != WEOF );
   VERIFY( c5 == c4 );
-  s2.signal ();
+  s2.signal();
+  s1.wait(); 
 }
 
 int main()