mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-30 07:14:09 +08:00
re PR libstdc++/9988 (filebuf::overflow writes EOF to file)
2003-03-09 Paolo Carlini <pcarlini@unitus.it> PR libstdc++/9988 * include/bits/fstream.tcc (overflow): don't write EOF to file. * testsuite/27_io/filebuf_virtuals.cc (test15): Add. From-SVN: r64045
This commit is contained in:
parent
e1a0421226
commit
3006d72869
@ -1,3 +1,9 @@
|
||||
2003-03-09 Paolo Carlini <pcarlini@unitus.it>
|
||||
|
||||
PR libstdc++/9988
|
||||
* include/bits/fstream.tcc (overflow): don't write EOF to file.
|
||||
* testsuite/27_io/filebuf_virtuals.cc (test15): Add.
|
||||
|
||||
2003-03-08 Jerry Quinn <jlquinn@optonline.net>
|
||||
|
||||
PR libstdc++/9561
|
||||
|
@ -252,7 +252,9 @@ namespace std
|
||||
|
||||
if (__testout)
|
||||
{
|
||||
if (__testput)
|
||||
if (traits_type::eq_int_type(__c, traits_type::eof()))
|
||||
__ret = traits_type::not_eof(__c);
|
||||
else if (__testput)
|
||||
{
|
||||
*this->_M_out_cur = traits_type::to_char_type(__c);
|
||||
_M_out_cur_move(1);
|
||||
|
@ -75,6 +75,7 @@ const char name_04[] = "filebuf_virtuals-4.txt"; // empty file, need to create
|
||||
const char name_05[] = "filebuf_virtuals-5.txt"; // empty file, need to create
|
||||
const char name_06[] = "filebuf_virtuals-6.txt"; // empty file, need to create
|
||||
const char name_07[] = "filebuf_virtuals-7.txt"; // empty file, need to create
|
||||
const char name_08[] = "filebuf_virtuals-8.txt"; // empty file, need to create
|
||||
|
||||
class derived_filebuf: public std::filebuf
|
||||
{
|
||||
@ -759,6 +760,43 @@ void test14()
|
||||
fbuf1.close();
|
||||
}
|
||||
|
||||
|
||||
class OverBuf : public std::filebuf
|
||||
{
|
||||
public:
|
||||
int_type pub_overflow(int_type c = traits_type::eof())
|
||||
{ return std::filebuf::overflow(c); }
|
||||
};
|
||||
|
||||
// libstdc++/9988
|
||||
void test15()
|
||||
{
|
||||
using namespace std;
|
||||
bool test = true;
|
||||
|
||||
OverBuf fb;
|
||||
fb.open(name_08, ios_base::out | ios_base::trunc);
|
||||
|
||||
fb.sputc('a');
|
||||
fb.pub_overflow('b');
|
||||
fb.pub_overflow();
|
||||
fb.sputc('c');
|
||||
fb.close();
|
||||
|
||||
filebuf fbin;
|
||||
fbin.open(name_08, ios_base::in);
|
||||
filebuf::int_type c;
|
||||
c = fbin.sbumpc();
|
||||
VERIFY( c == 'a' );
|
||||
c = fbin.sbumpc();
|
||||
VERIFY( c == 'b' );
|
||||
c = fbin.sbumpc();
|
||||
VERIFY( c == 'c' );
|
||||
c = fbin.sbumpc();
|
||||
VERIFY( c == filebuf::traits_type::eof() );
|
||||
fbin.close();
|
||||
}
|
||||
|
||||
main()
|
||||
{
|
||||
test01();
|
||||
@ -777,5 +815,6 @@ main()
|
||||
test12();
|
||||
test13();
|
||||
test14();
|
||||
test15();
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user