9661-1.cc: Avoid leaking the semaphores if a VERIFY fails.
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
This commit is contained in:
parent
23249ac43c
commit
9339bda82d
11 changed files with 121 additions and 63 deletions
|
@ -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.
|
||||
|
|
|
@ -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 <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();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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 <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();
|
||||
}
|
||||
|
|
|
@ -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 <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();
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
@ -29,10 +29,14 @@
|
|||
#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();
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -30,6 +30,10 @@
|
|||
#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();
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
@ -30,10 +30,14 @@
|
|||
#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();
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
@ -30,10 +30,14 @@
|
|||
#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();
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue