From 9339bda82ddf23889e540d6560ea56db8e9b85ec Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Fri, 19 May 2006 23:56:12 +0000 Subject: [PATCH] 9661-1.cc: Avoid leaking the semaphores if a VERIFY fails. 2006-05-19 Paolo Carlini * 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 | 14 +++++++++++ .../27_io/basic_filebuf/close/char/4879.cc | 28 ++++++++++++---------- .../27_io/basic_filebuf/close/char/9964.cc | 22 ++++++++++------- .../27_io/basic_filebuf/imbue/char/13171-2.cc | 20 +++++++++------- .../27_io/basic_filebuf/imbue/wchar_t/14975-2.cc | 17 ++++++++----- .../27_io/basic_filebuf/seekoff/char/26777.cc | 10 +++++--- .../27_io/basic_filebuf/underflow/char/10097.cc | 13 ++++++---- libstdc++-v3/testsuite/27_io/objects/char/7.cc | 19 +++++++++------ .../testsuite/27_io/objects/char/9661-1.cc | 12 ++++++---- libstdc++-v3/testsuite/27_io/objects/wchar_t/7.cc | 17 ++++++++----- .../testsuite/27_io/objects/wchar_t/9661-1.cc | 12 ++++++---- 11 files changed, 121 insertions(+), 63 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index eeea743..dc26e70 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,17 @@ +2006-05-19 Paolo Carlini + + * 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 * include/tr1/hashtable (hashtable<>::m_find): Remove; update callers. diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/4879.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/4879.cc index cfbfc44a..e976c37 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/4879.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/4879.cc @@ -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 @@ -33,11 +34,15 @@ #include #include #include + +// No asserts, avoid leaking the semaphores if a VERIFY fails. +#undef _GLIBCXX_ASSERT + #include // libstdc++/2913, libstdc++/4879 // John Fardo , Brad Garcia -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(); } - - diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/9964.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/9964.cc index 21d7ae6..1b9c3ff 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/9964.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/9964.cc @@ -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 @@ -32,10 +33,14 @@ #include #include #include + +// No asserts, avoid leaking the semaphores if a VERIFY fails. +#undef _GLIBCXX_ASSERT + #include // 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(); } diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc index 5399885..f164958 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc @@ -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 @@ -28,10 +28,13 @@ #include #include +// No asserts, avoid leaking the semaphores if a VERIFY fails. +#undef _GLIBCXX_ASSERT + #include // 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(); } diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc index 586cdfe..14cfde7 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc @@ -4,7 +4,7 @@ // 2004-04-16 Petur Runolfsson -// 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 @@ -29,10 +29,14 @@ #include #include #include + +// No asserts, avoid leaking the semaphore if a VERIFY fails. +#undef _GLIBCXX_ASSERT + #include // 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(); } diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/26777.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/26777.cc index 7312ce2..9cc9733 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/26777.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/26777.cc @@ -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 #include #include @@ -31,7 +34,7 @@ #include // 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(); } diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/10097.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/10097.cc index 345a664..ffc36a3 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/10097.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/10097.cc @@ -30,6 +30,10 @@ #include #include #include + +// No asserts, avoid leaking the semaphores if a VERIFY fails. +#undef _GLIBCXX_ASSERT + #include 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(); } diff --git a/libstdc++-v3/testsuite/27_io/objects/char/7.cc b/libstdc++-v3/testsuite/27_io/objects/char/7.cc index 646ac66..a90fa03 100644 --- a/libstdc++-v3/testsuite/27_io/objects/char/7.cc +++ b/libstdc++-v3/testsuite/27_io/objects/char/7.cc @@ -3,7 +3,7 @@ // 2003-04-26 Petur Runolfsson -// 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 @@ -30,10 +30,14 @@ #include #include #include + +// No asserts, avoid leaking the semaphore if a VERIFY fails. +#undef _GLIBCXX_ASSERT + #include // 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(); } diff --git a/libstdc++-v3/testsuite/27_io/objects/char/9661-1.cc b/libstdc++-v3/testsuite/27_io/objects/char/9661-1.cc index 6497f62..4723282 100644 --- a/libstdc++-v3/testsuite/27_io/objects/char/9661-1.cc +++ b/libstdc++-v3/testsuite/27_io/objects/char/9661-1.cc @@ -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 #include #include @@ -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(); } diff --git a/libstdc++-v3/testsuite/27_io/objects/wchar_t/7.cc b/libstdc++-v3/testsuite/27_io/objects/wchar_t/7.cc index f1078cb..1e962d7 100644 --- a/libstdc++-v3/testsuite/27_io/objects/wchar_t/7.cc +++ b/libstdc++-v3/testsuite/27_io/objects/wchar_t/7.cc @@ -3,7 +3,7 @@ // 2003-05-01 Petur Runolfsson -// 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 @@ -30,10 +30,14 @@ #include #include #include + +// No asserts, avoid leaking the semaphore if a VERIFY fails. +#undef _GLIBCXX_ASSERT + #include // 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(); } diff --git a/libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-1.cc b/libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-1.cc index 5b3c231..beee404 100644 --- a/libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-1.cc +++ b/libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-1.cc @@ -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 #include #include @@ -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(); } -- 2.7.4